参考答案
结论:Go中for range遍历时,循环变量是复用的临时变量,取其地址得到的是同一地址,指向每次迭代赋值的临时变量,并非每个元素的真实独立地址。核心要点:for i,v := range slice { } 中v是每次迭代赋给的同一个变量;若取&v,所有指针指向同一个地址,循环结束v为最后一个值;若要存地址需取&slice[i]或使用局部变量拷贝。示例:for _,v := range []int{1,2,3}{ go func(){println(v)}() } 会全打印3;应传参或取元素地址。