reflect反射实战
type User struct {
UserId int `name:"uid"`
UserName string
} u := User{}
t := reflect.TypeOf(u)
if t.Kind() == reflect.Ptr {
t = t.Elem() //如果u是指针要这样用
}
for i := 0; i < t.NumField(); i++ {
fmt.Println(t.Field(i).Name, t.Field(i).Type)
} u := User{}
t := reflect.ValueOf(u)
if t.Kind() == reflect.Ptr {
t = t.Elem() //如果u是指针要这样用
}
values := []interface{}{12, "test"}
for i := 0; i < t.NumField(); i++ {
fmt.Println(t.Field(i).Interface())
if t.Field(i).Kind() == reflect.ValueOf(values[i]).Kind() {
t.Field(i).Set(reflect.ValueOf(values[i]))
}
}最后更新于