interface类型有一个(type,value)对,反射是操纵这个(type,value)的机制
1.reflect包
func ValueOf() Value
func TypeOf() Type
2.反射定律
1.反射可以将interface类型变量转换成反射对象
即是可以获取interface变量的类型和变量
2.反射可以将反射对象还原成interface对象
func foo(){
var A interface{}. //原对象
A = 100
V := reflect.ValueOf(A) //反射的对象
B := v.Interface{} //还原成原对象
if A == B{
fmt.fprintf("they are same\n") //两者是相同的
}
}
3.反射对象可以修改,value值必须可以设置
var x float64 = 3.4
v := reflect.ValueOf(&x) //必须传指针
v.Elem().SetFloat(1.1)