<分区>
这是下面的代码:
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版本:1.5.2 darwin/amd64
标签 go
<分区>
这是下面的代码:
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版本:1.5.2 darwin/amd64
最佳答案
简短:在最后等待,它会打印。
更好的选择:通过 channel 沟通终止。
长:只要主 goroutine 存在,go 程序就会存在。
当您执行 go somefunc()
时,它不会立即启动,somefunc() 会被安排。
在您的情况下,您安排了一些 goroutines 并退出了——调度程序没有理由运行其他 goroutines。
关于go - 为什么不能在go中运行go函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35063476/