golang之反射

反射基本介绍

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

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

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

4)使用反射,需要 import ("reflect")

反射重要的函数和概念

1)reflect.TypeOf(变量名),获取变量的类型,返回reflect.Type类型

2)reflect.ValueOf(变量名),获取变量的值,返回reflect.Value类型,reflect.Value是一个结构体类型。通过reflect.Value,可以获取到关于该变量的很多信息

3)变量、interface{}和reflect.Value是可以相互转换的,这点在实际开发中,会经常使用到。

  interface{}  ——>  reflect.Value:

    rVal := reflect.ValueOf(b)

  reflect.Value  ——>  interface{}:

    iVal := rVal.Interface()

  interface{}  ——>  原来的变量(类型断言):

    v := iVal.(Stu)

相关推荐