golang for循环时修改自身的值
程序员文章站
2024-02-18 13:40:22
...
一、尝试 v.Name 直接修改
1、代码
package main
import "fmt"
type User struct {
Name string
}
func main() {
users := []User{{Name: "姓名1"}, {Name: "姓名2"}, {Name: "姓名3"}}
for _, v := range users {
v.Name = "暂无"
}
fmt.Println(users)
}
2、打印
[{姓名1} {姓名2} {姓名3}]
Process finished with exit code 0
3、结论
修改失败
二、println() 函数查看内存地址是否一致
1、代码
package main
type User struct {
Name string
}
func main() {
users := []User{{Name: "姓名1"}, {Name: "姓名2"}, {Name: "姓名3"}}
for k, v := range users {
println(&users[k], " VS ", &v)
}
}
2、打印
0xc00003bf48 VS 0xc00003bf38
0xc00003bf58 VS 0xc00003bf38
0xc00003bf68 VS 0xc00003bf38
Process finished with exit code 0
3、结论
内存地址不一样,修改无效
三、users[k].Name 修改
1、代码
package main
import "fmt"
type User struct {
Name string
}
func main() {
users := []User{{Name: "姓名1"}, {Name: "姓名2"}, {Name: "姓名3"}}
for k := range users {
users[k].Name = "暂无"
}
fmt.Println(users)
}
2、打印
[{暂无} {暂无} {暂无}]
Process finished with exit code 0
3、结论
修改成功
推荐阅读
-
golang for循环时修改自身的值
-
前端使用mobx时,变量已经修改了,为什么组件还是没变化,map类型变量,对象类型变量的值获取问题(主要矛盾发生在组件使用时)
-
解决vue v-for 遍历循环时key值报错的问题
-
AngularJS修改model值时,显示内容不变的实例
-
Vue用v-for给循环标签自身属性添加属性值的方法
-
解决vue v-for 遍历循环时key值报错的问题
-
AngularJS修改model值时,显示内容不变的实例
-
Form提交时,后台获取jquery修改过的隐藏控件的值
-
golang修改结构体中的切片值方法
-
golang中for循环遍历channel时需要注意的问题详解