直接上代码看下运行结果:
for i := 0; i<10;i++ {
go func() {
println(i)
}()
}
time.Sleep(time.Second)
运行结果:
2
4
6
6
7
9
10
10
10
5
发现有多次重复,有两种方法解决
for i := 0; i<10;i++ {
go func(i int) {
println(i)
}(i)
}
time.Sleep(time.Second)
for i := 0; i<10;i++ {
i:=i
go func() {
println(i)
}()
}
time.Sleep(time.Second)
本文参考:https://talks.godoc.org/github.com/chai2010/awesome-go-zh/chai2010/chai2010-golang-concurrency.slide#32