go-reflection
反射是指程序能够查看自己的结构的能力,通常是通过类型来实现的。
Types and interface
反射是建立在类型系统之上的。 go是静态类型,所有变量都有一个类型,在编译阶段就确定了。
type MyInt int |
i 类型为int, j类型为MyInt,虽然底层实现i和j都是int,但是不通过转换不能相互赋值。
一个重要的类型是接口interface,表现为一组固定的方法。一个接口可以保持任何实现了接口方法的具体值(除了接口)。
一个接口变量保存的是一对值(value, type)。
反射从接口值到反射对象
简单地说,反射就是检测保存接口里面的类型和值的一种机制。
反射包有Type和Value.
import ( |
// TypeOf returns the reflection Type of the value in the interface{}. |
先把x赋值给空接口,
从反射对象到接口值
修改反射对象,它的的值必须是可设置的
可设置是反射值的一个属性,不是所有的反射值都有这个属性。
var x float64 = 3.4 |