package main
import("fmt""reflect")funcmain(){var Num float64=3.14
v := reflect.ValueOf(Num)//将接口类型变量转换为反射类型对象v
t := reflect.TypeOf(Num)//将接口类型变量转换为反射类型对象t
fmt.Println("Reflect : Num.Value = ", v)
fmt.Println("Reflect : Num.Type = ", t)}
反射可以将“反射类型对象”转换为“接口类型变量”。用interface方法恢复其接口类型的值
package main
import("fmt""reflect")funcmain(){var Num =3.14
v := reflect.ValueOf(Num)
t := reflect.TypeOf(Num)
fmt.Println(v)
fmt.Println(t)
origin := v.Interface().(float64)
fmt.Println(origin)}
如果要修改“反射类型对象”,其值必须是“可写的”。通过CanSet函数判断反射对象是否可以修改
package main
import("fmt""reflect")funcmain(){var Num float64=3.14
v := reflect.ValueOf(Num)
fmt.Println("v的可写性:", v.CanSet())}