为什么不能在go中运行go函数?

时间:2016-01-28 13:56:09

标签: 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 version:1.5.2 darwin / amd64

1 个答案:

答案 0 :(得分:2)

简短:在结尾处等待,然后打印 更好的选择:通过渠道沟通终止。

Long:只要主要的goroutine生活,一个go计划就会存在。

执行git add . -n时,它不会立即启动,somefunc()会计划

在你的情况下,你安排了一些goroutine并退出 - 并且调度程序没有理由运行其他goroutines。