2016-01-28 159 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。