golang之反射

Posted xiangxiaolin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

以上是关于golang之反射的主要内容,如果未能解决你的问题,请参考以下文章

一看就懂系列之Golang的反射

golang碎片整理之反射

golang/go语言Go语言之反射

golang反射自定义tag

golang反射

golang Golang反射:遍历任意结构