go反射见解

go反射

  • Go 语言里有个反射三定律,是你在学习反射时,很重要的参考:
  1. Reflection goes from interface value to reflection object.

  2. Reflection goes from reflection object to interface value.

  3. To modify a reflection object, the value must be settable.

翻译一下,就是:

  1. 反射可以将接口类型变量 转换为“反射类型对象”;

  2. 反射可以将 “反射类型对象”转换为 接口类型变量;

  3. 如果要修改 “反射类型对象” 其类型必须是 可写的;

  • 常见用法
  1. reflect.TypeOf(i) :获得接口值的类型
  2. reflect.ValueOf(i):获得接口值的值
  3. reflect.ValueOf(i).Elem():获得指针指向的数据
  4. reflect.ValueOf(i).Kind():获得反射对象类别
  5. reflect.ValueOf(i).Type():获得反射对象类型(范围小于kind)

例如:
go反射见解
go反射见解
go反射见解
注意: 不是接收变量指针创建的反射对象,是不具备『可写性』的