2016-01-28 133 views
0

这是下面的代码:为什么不能运行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

但它现在不能打印任何代码,为什么?

去版本:1.5.2达尔文/ AMD64

回答

2

短:将在年底等待,它会打印。
更好的选择:通过通道进行通信终端。

长时间:只要主要的常规生活,一个围棋程序就会生活。

当你做go somefunc(),它不是立即开始,somefunc()得到安排

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