func main() {
for i := 0; i < 3; i++ {
go func() {
fmt.Println(i)
}()
}
time.Sleep(time.Second)
}
乍一看,以为代码输出:
1
2
3
运行结果:
3
3
3
那是因为先执行的函数,当运行到
time.Sleep(time.Second),这个位置,i的之已经是3了,gorouine才执行。
修改如下,输出:1 2 3
func main() {
for i := 0; i < 3; i++ {
go func(v int) {
fmt.Println(v)
}(i)
}
time.Sleep(time.Second)
}