一句话总结:
for循环速度远快于新启一个gorutine的速度,而匿名函数中传的是引用,导致拿到的值不稳定
解决方法:
函数传参,函数的参数传递是值传递,可以避免引用传递导致的数据错误
https://blog.csdn.net/qq_35976351/article/details/81986496
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
var wg sync.WaitGroup
for i := 0; i < 5; i++ {
wg.Add(1)
go func() {
fmt.Println(i)
wg.Done()
}()
}
wg.Wait()
}
几次的数据打印都不一样:
5
3
2
5
5
3
5
4
5
5
3
3
5
5
5