AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
## 使用反射来修改值 一个变量就是一个可寻址的内存空间,里面存储了一个值,并且存储的值可以通过内存地址来更新。 实际上,**所有通过reflect.ValueOf(x)返回的reflect.Value都是不可取地址的**。 唯一可以修改值的办法就是通过指针: ~~~ n := 10 value := reflect.ValueOf(&n) //获取指针的拷贝 fmt.Println(value) //0x1400001e2b0 指针的值,其实就是内存地址 m := value.Elem() //通过指针解引用获取到实际的值 fmt.Println(m) //实际的值,10 fmt.Println(m.CanAddr()) //判断是否可以被取地址 m.SetInt(100) //对实际的值进行修改 fmt.Println(n) ~~~ 结果: ``` 0x1400001e2b0 10 true 100 ```