为什么不能在go中运行go功能?

为什么不能在go中运行go功能?,go,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简短:在末尾等待,它将打印出来。 更好的选择:通过通

这是以下代码:

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

简短:在末尾等待,它将打印出来。
更好的选择:通过通道进行通信终止

长:一个围棋程序的寿命和主要goroutine的寿命一样长

当您执行
转到somefunc()
时,它不会立即启动,somefunc()会被安排


在您的情况下,您计划了一些goroutine并退出–调度器没有理由运行其他goroutine。

简短:在末尾等待,它将打印。
更好的选择:通过通道进行通信终止

长:一个围棋程序的寿命和主要goroutine的寿命一样长

当您执行
转到somefunc()
时,它不会立即启动,somefunc()会被安排

在您的情况下,您计划了一些goroutine并退出了,而调度器没有理由运行其他goroutine