去等待组没有明显的行为

时间:2019-03-15 15:45:24

标签: go

我不明白为什么此代码返回

三个 三 三个

package main

import (
    "fmt"
    "sync"
)

func main() {
    wg := sync.WaitGroup{}
    data := []string{"one", "two", "three"}
    for _, v := range data {
        wg.Add(1)
        go func() {
            fmt.Println(v)
            wg.Done()
        }()
    }
    wg.Wait()
}

请向任何人解释

1 个答案:

答案 0 :(得分:-1)

v := v添加为循环中的第一行。

Reference

  

这是因为循环的每次迭代都使用变量v [...]

的相同实例