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

PIPIONE
TA貢獻1829條經驗 獲得超9個贊
Go語言的原則是當main函數運行結束后,所有正在運行的協程都會終止! 也就是說主程序就已經退出了,go后的兩個function還沒來得及執行,所以看不到打印。
你可以讓主程序“睡”一會兒再退出,然后看看結果就明白了!
package mainimport ( "fmt" "time")func main() { go loop() go loop() time.Sleep(500000) }func loop() { for i := 0; i<10; i++ { fmt.Println(i) } }

Helenr
TA貢獻1780條經驗 獲得超4個贊
好歹讓主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 關注
- 422 瀏覽
添加回答
舉報
0/150
提交
取消