for range的val不能直接修改,因为地址不同
参考:https://codeday.me/bug/20170630/34971.html
package main
import "fmt"
func main() {
x := make([]int, 3)
x[0], x[1], x[2] = 1, 2, 3
for i, val := range x {
fmt.Println(&x[i], "vs.", &val)
}
}
//输出
0x416020 vs. 0x41602c
0x416024 vs. 0x41602c
0x416028 vs. 0x41602c
本文探讨了在Go语言中使用forrange遍历数组或切片时,val变量的地址与原始元素地址不同的原因。通过示例代码,解释了为何直接修改val不会影响原数组的值,并提供了深入理解这一现象的链接。
752

被折叠的 条评论
为什么被折叠?



