二二、GO语言的反射

基本介绍

  1.反射可以在运行时动态获取变量的各种信息,比如变量的类型(type),类别(kind)

  2.如果是结构体变量还可以获取到结构本身的信息(包括字段和方法)

  3.通过反射可以修改变量的值,可以调用关联的方法

  4.使用反射需要引入reflect包

    reflect包介绍

      import "reflect"

      reflect包实现了运行时反射,允许程序操作任意类型的对象。典型用法是用静态类型interface{}保存一个值,通过调用TypeOf获取其动态类型信息,该函数返回一个Type类型值。调用ValueOf函数返回一个Value类型值,该值代表运行时的数据。Zero接受一个Type类型参数并返回一个代表该类型零值的Value类型值。

 

反射的注意事项和细节说明

  1.reflect.Value.Kind,获取变量的类别,返回的是一个常量

  2.Type是类型,Kind是类别,Type和Kind可能是相同的,也可能是不相同的,

      比如说自定义一个结构体Person,那么这个结构体的类别是struct,类型是Person,

      自定义一个结构体Computer,那么这个结构体的类别是struct,类型是Computer,

      但是如果是int的话,那么类型和类别都是int

  3.通过反射可以让变量在interface{}和Reflect.Value之间相互转换,interface可以通过类型断言得到实际变量的类型

 

  

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章