go遍历过程中用 value 取不到 collection 的指针地址
for-range 其实是语法糖,内部调用还是 for 循环,初始化会拷贝带遍历的列表(如 array,slice,map)。每次遍历的 value 地址是不变的,若用 value 去地址,最终只会拿到一个地址。但换个方式还是可以取到地址的。
package main import "fmt" func main() { arr := []int{1, 2, 3} for key, val := range arr { fmt.Println("address:", &val, &arr[key], "value:=", val) } //address: 0xc0000180c8 0xc00000c180 value:= 1 //address: 0xc0000180c8 0xc00000c188 value:= 2 //address: 0xc0000180c8 0xc00000c190 value:= 3 }