type User struct{
Name string`json:"name"`
Age int`json:"age"`}funcinspectStruct(u User){
t := reflect.TypeOf(u)
v := reflect.ValueOf(u)for i :=0; i < t.NumField(); i++{
field := t.Field(i)
value := v.Field(i).Interface()// 成员变量的值
fmt.Printf("Field: %s, Tag: %s\n", field.Name, field.Tag.Get("json"))}}
动态调用函数
funcAdd(a, b int)int{return a + b
}funcmain(){
funcValue := reflect.ValueOf(Add)
args :=[]reflect.Value{reflect.ValueOf(3), reflect.ValueOf(4)}
results := funcValue.Call(args)
fmt.Println(results[0].Int())// 输出: 7}
修改值
funcmodifyValue(x interface{}){
v := reflect.ValueOf(x)// Elem()是获取指针指向的值,CanSet方法则检查该Value是否可以被修改if v.Kind()== reflect.Ptr && v.Elem().CanSet(){
v.Elem().SetInt(100)}}funcmain(){var x int=42modifyValue(&x)
fmt.Println(x)// 输出: 100}