知识卡片
反射三次转换
内容
Go 反射的核心路径是:接口值变成 reflect.Type/Value,反射对象再还原成接口值;若要修改,还必须拿到可设置的值。这个边界防止“看见值”被误认为“能改值”,这与 [[指针传递副作用]] 的道理一致:没有地址,就没有修改权。
参考来源
- 位置:《Go语言高级开发与实战》第2章《Go语言高级编程技巧》(源文件:_epub-src/GoYu Yan Gao Ji Kai Fa Yu Shi Zhan_split_016.html)
- 结论依据:原文列出反射三大法则,分别说明接口到反射对象、反射对象到接口变量、修改必须可写,因此可推出反射操作的边界。
- 原始内容:等。 2.2.2 反射3大法则简介 1 法则1:反射可以将“接口变量”转换为“反射对象” 反射是一种检测存储在接口变量中的值和类型的机制。通过reflect包的一些函数,可以把接口转换为反射定义的对象。reflect包的常用函数如下。 ● reflect.ValueOf({}interface)reflect.Value:获取某个变量的值,但值是通过reflect.Value对象描述的。 ● re fl