ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的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 ```