这是以下代码:
func main() {
values := []int{1, 2, 3, 4}
for _, v := range values {
go func(x int) {
fmt.Println(x)
}(v)
}
}
如果此代码没有go
个关键字,则会打印1, 2, 3, 4
。
但它现在无法打印任何代码,为什么?
go version:1.5.2 darwin / amd64
答案 0 :(得分:2)
简短:在结尾处等待,然后打印 更好的选择:通过渠道沟通终止。
Long:只要主要的goroutine生活,一个go计划就会存在。
执行git add . -n
时,它不会立即启动,somefunc()会计划。
在你的情况下,你安排了一些goroutine并退出 - 并且调度程序没有理由运行其他goroutines。