我有for循環與goroutines。我在循環中創建了打印一個字符串和「我」這是一個int的去例程。我知道字符串,「我」會按照隨機順序打印。但是,「我」沒有正確添加,如下所示。五個字符串中的三個或四個字符串的值保持不變,然後跳轉到2或1.不應該有隨機順序中的1,2,3,4,5個字符嗎?我究竟做錯了什麼?Golang for循環加入i ++不一致
package main
import (
"fmt"
"sync"
)
func main() {
a := []string{
"apple",
"orange",
"grape",
"peach",
"lemon",
}
wg := sync.WaitGroup{}
wg.Add(len(a))
i := 0
for _, v := range a {
go func(a string) {
fmt.Println(a, i)
i++
wg.Done()
}(v)
}
wg.Wait()
}
結果1:
orange 0
apple 0
lemon 0
peach 2
grape 0
結果2:
lemon 0
grape 0
peach 0
apple 0
orange 1
我的目標(隨機順序)
lemon 2
grape 4
peach 1
apple 0
orange 3
謝謝你向我解釋。我聽說過一場比賽的情況,但直到現在還不明白。 –