package main
import (
"fmt"
)
func test_range_val_copy() {
a := []int{1, 2, 3, 4}
// 下面使用的v是一个临时变量
// 相当于 var v int
// 这时临时变理v的地址是固定下来了,每次v的值在变,但是&v的地址是不变的
// 最后&v会指向数组最后一个元素,所以在使用range循环的时候,一定注意是值拷贝
for i, v := range a {
fmt.Println(&v, &a[i])
}
}
func main() {
test_range_val_copy()
}
运行结果:

本文通过一个具体的Go语言代码示例,深入解析了使用range循环遍历数组时,如何正确理解值拷贝的概念。文章展示了在循环中变量v的地址虽然固定,但其值随数组元素变化的现象,强调了在使用range时应注意到的是值拷贝而非引用拷贝。
325

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



