二二、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可以通过类型断言得到实际变量的类型

 

  

 

 

 

 

posted @ 2021-08-24 16:26  安心晨  阅读(36)  评论(0编辑  收藏  举报