Go 语言中的变量分为两部分:类型信息、值信息
反射:
反射是指在程序运行期对对程序本身进行访问和修改的能力。程序在编译时,变量被转换成内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。
支持反射的语言可以在程序编译时期将变量的反射信息,如字段名、字段类型、结构体信息等整合到可执行文件中,并给程序提供可以访问的接口,这样就可以在程序运行时期获取类型的反射信息,并且有能力修改他们。
Go程序在运行期使用reflect包访问程序的反射信息。
reflect包
在Go语言的反射机制中,任何接口值都由一个具体的类型和一个具体类型的值两部分构成。在Go语言中反射相关的功能有内置的reflect包提供,任意接口值都可以理解为reflect.type 和 reflect.value两部分组成。并且提供了接口reflect.typeof 和 reflect.valueof两个函数来获取任意对象的value和type
原文:https://www.cnblogs.com/flycc/p/12823995.html