2014-02-17 53 views

回答

7

你夠程不捕獲變量的當前值iv,而是他們引用變量本身。在這種情況下,5個衍生出的goroutine在for循環完成之前沒有排定,因此所有打印出的最後一個值爲iv

如果你想捕捉一些變量的gouroutine的當前值,您可以修改代碼來讀取類似如下:

go func(i, v int){ 
    fmt.Println(i,v) 
}(i, v) 

現在每個gouroutine都有自己持有的變量副本在它產生時的價值。

+0

哦,謝謝,詹姆斯!我試圖修復它近一個小時。 我的問題解決了。 –

相關問題