Go-使用反射创建并操作结构体

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")
 

 

posted @ 2023-07-03 18:00  图兜  阅读(232)  评论(0编辑  收藏  举报