go--反射
变量的内在机制 go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息 值信息:程序运行过程中可动态变化的。 反射介绍 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言可以在编译器就将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改他们。 在go语言中,空接口可以存储任意类型的变量,要获取这个空接口保存的数据是什么,就要使用反射。 reflect包 任意接口值在反射中都可以理解为由 reflect.Type 和 reflect.Value 两部分组成,并且reflect包提供了 reflect.TypeOf 和 reflect.ValueOf 两个函数来获取任意对象的Value和Type。 TypeOf 在go语言中,使用 reflect.TypeOf() 函数可以获得任意值得类型对象(reflect.Type),程序通过类型对象可以访问任意值的类型信息。 func reflectType(x interface{}) { v := reflect.typeOf(x) fmt.Printf("type:%v\n", v) } func