golang通过反射创建结构体

通过反射创建结构体 【golang通过反射创建结构体】练习通过反射创建结构体时写的代码

package mainimport ( "fmt" "reflect" )type Student struct { Name string `json:"name"` Id int`json:"id"`}func main(){ var ( model *Student st reflect.Type vl reflect.Value ) st = reflect.TypeOf(model) //获取类型 st = st.Elem()//获取指向的类型 fmt.Println(st)//main.Student vl = reflect.New(st) //创建一个指向st类型的指针,本身为val类型 fmt.Printf("%v,%T\n",vl,vl)//&{ 0},reflect.Value{ 0} vl = vl.Elem() //获取指针指向的vl的值 fmt.Printf("%v,%T\n",vl,vl)//{ 0},reflect.Value vl.Field(0).SetString("lalala") //给第一个值赋值 vl.Field(1).SetInt(15)//给第二个值赋值 fmt.Printf("%T\n",vl) //reflect.Value m := vl.Interface() m = m.(Student) fmt.Printf("%T",m) //main.Student } }

    推荐阅读