一、反射介绍
* 在Go语言标准库中reflect包提供了运行时反射,程序运行过程中动态操作结构体
* 当变量存储结构体属性名称,想要对结构体这个属性赋值或查看时,就可以使用反射.
* 反射还可以用作判断变量类型
* 整个reflect包中最重要的两个类型
* reflect.Type 类型
* reflect.Value 值
* 获取到Type和Value的函数
* reflect.TypeOf(interface{}) 返回Type
* reflect.ValueOf(interface{}) 返回值Value
* 判断变量类型
a:=1.5
fmt.Println(reflect.TypeOf(a))
* 获取结构体属性的值
ype People struct {
Id int
Name string
}
func main() {
peo := People{1, "张三"}
//获取peo的值
v := reflect.ValueOf(peo)
//获取属性个数,如果v不是结构体类型panic
fmt.Println(v.NumField())
//获取第0个属性,id,并转换为int64类型
fmt.Println(v.Field(0).Int())
//获取第1个属性,转换换为string类型
fmt.Println(v.Field(1).String())
//根据名字获取类型,并把类型名称转换为string类