package mainimport "fmt"func main() { go loop() go loop()
}func loop() { for i := 0; i < 10; i++ {
fmt.Println(i)
}
}這是我的代碼,結(jié)果是什么都沒輸出;按我的理解是應(yīng)該輸出兩邊0-9的
2 回答

慕娘9325324
TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
Go語言的原則是當(dāng)main函數(shù)運(yùn)行結(jié)束后,所有正在運(yùn)行的協(xié)程都會(huì)終止! 也就是說主程序就已經(jīng)退出了,go后的兩個(gè)function還沒來得及執(zhí)行,所以看不到打印。
你可以讓主程序“睡”一會(huì)兒再退出,然后看看結(jié)果就明白了!
package mainimport ( "fmt" "time")func main() { go loop() go loop() time.Sleep(500000) }func loop() { for i := 0; i<10; i++ { fmt.Println(i) } }

弒天下
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
好歹讓主go routine阻塞住不要退出吶
package mainimport ( "fmt" "sync")var wg sync.WaitGroupfunc main() { go loop() go loop() wg.Wait() }func loop() { wg.Add(1) for i := 0; i < 10; i++ { fmt.Println(i) } wg.Done() }
- 2 回答
- 0 關(guān)注
- 411 瀏覽
添加回答
舉報(bào)
0/150
提交
取消