type User struct{ UserId string Name string } func TestReflectStructPtr(){ var ( model *User st reflect.Type elem reflect.Value } st=reflect.Type(model) //获取结构体指针类 *User st=st.Elem() //使st = 其指向的结构体类型,类似指针的解引用 elem=reflect.New(st) //reflect.New()返回的是一个Value类型值,该值持有一个 指向类型为typ的新申请的零值的指针 //model就是创建的user结构体变量(实例) model=elem.Interface{}.(*User) //model的类型是*User,其指向与elem一致,操作elem与操作model结果一样 elem=elem.Elem() // 取得elem指向的值,即elem=结构体变量(实例):一个空结构体变量 elem.FieldByName("UserId").SetString("123456789") //赋值 elem.FieldByName("Name").SetString("nickname")
标签:反射,创建,elem,st,reflect,User,Go,model,结构 From: https://www.cnblogs.com/bug-boy/p/17523583.html