【Golang】for range 数组指针遍历
在Go语言中,使用for range
遍历数组或切片时,确实会对每个元素进行值拷贝。但是,当你遍历的是指针数组(如[]*Student
)时,虽然指针本身是被拷贝的,但拷贝的指针仍然指向原始的内存地址。因此,通过这个拷贝的指针修改指向的值会影响到原始数据。
这意味着,即使for range
对指针进行了拷贝,你仍然可以通过这个拷贝的指针修改原始结构体的内容。下面是一个例子来说明这一点:
go
1 | package main |
在这个例子中,尽管for range
对每个*Student
指针进行了拷贝,但通过这个拷贝的指针修改Age
字段时,修改的是原始Student
结构体的内容。因此,当再次遍历students
数组时,你会看到每个学生的年龄都已经增加了。
总结来说,当你使用for range
遍历指针数组并修改指向的值时,这些修改会反映在原始数组上,因为指针拷贝仍然指向原始的内存地址。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Lei Qi's Blog!
评论