package mainimport "fmt"func main() { go loop() go loop()
}func loop() { for i := 0; i < 10; i++ {
fmt.Println(i)
}
}这是我的代码,结果是什么都没输出;按我的理解是应该输出两边0-9的
2 回答
慕娘9325324
TA贡献1783条经验 获得超5个赞
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)
}
}
弑天下
TA贡献1818条经验 获得超8个赞
好歹让主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 关注
- 424 浏览
添加回答
举报
0/150
提交
取消
