Open hapiman opened 6 years ago
t := reflect.typeOf(o)
获取到包名.类型名,如上:ref.Student
属性字段Fields
建立在typeOf
之上
t.Name()
对象的名称
t.Kind()
对象类型,如上为struct
t.NumField()
获取对象的属性值
t.Field(i)
获取某个属性所有信息 A
t.NumMethod()
获取结构体上的方法数量
m := t.Method(i)
选择某个方法,通过m.Name, m.Type查看方法详情
v := reflect.ValueOf(o)
获取到结构体的值的引用
v=v.Elem()
将指针转化的结构值,特别要注意valueOf()中的变量是否指针或是值
v.FieldByName("Name")
直接获取值
val := v.Field(i).Interface()
获取某个属性的值 B
fmt.Printf("%6s:%v = %v \n", f.Name, f.Type, val)
关联A和B
m2 := v.MethodByName("Say")
在对象的值上调用某个方法
m2.Call([]reflect.Value{reflect.ValueOf("iris")})
调用方法,执行方法
如果想通过反射获取某个字段的值,就必须使用val := v.Field(i).Interface()
获取,也就是使用reflect.valueOf()
,而不使用reflect.typeOf()
关于Golang中方法及属性说明