golang踩坑——range
最近遇到了一个一个有关range的坑,确切的说是range+闭包的坑。
先看一下代码大概的重现
func main() {
ts := []int{1, 2, 3}
for _, t := range ts {
go func() {
fmt.Println(t)
}()
}
time.Sleep(time.Second)
}
按预想的结果切片ts中的元素是 {1,2,3},range便利ts应该输出 1,2,3 ,但实际上跑出来的结果是 3,3,3。
为什么会有这样的结果呢。
r
原创
2021-05-10 19:47:03 ·
412 阅读 ·
0 评论