//相对应for 循环 goroutine跑到慢 所以这里很大概率只会打印最后一条数据
func goRun() {
values := []int{1, 2, 3}
for _, v := range values {
go func() {
fmt.Println(v)
}()
}
}
//解决1 将参数传入匿名函数 这样参数就可以压栈了
func goRun2() {
values := []int{1, 2, 3}
for _, v := range values {
go func(i int) {
fmt.Println(i)
}(v)
}
}
//解决2 将参数赋值给临时变量 也可以将参数压栈
func goRun3() {
values := []int{1, 2, 3, 4, 5, 6}
for _, v := range values {
tmp := v
go func() {
fmt.Println(tmp)
}()
}
}
func main() {
//goRun()
//goRun2()
goRun3()
time.Sleep(time.Second)
}
转载于:https://www.cnblogs.com/alin-qu/p/10740748.html