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条经验 获得超3个赞
好歹让主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 关注
- 408 浏览
添加回答
举报
0/150
提交
取消