如何通过reflect动态创建struct并赋值??

phil.y · · 5084 次点击
首先导出age: ```go type Bar struct { Age int } ``` 然后: ```go if regStruct[str] != nil { t := reflect.ValueOf(regStruct[str]).Type() v := reflect.New(t).Elem() v.FieldByName("Age").SetInt(123) fmt.Println(v) } ```
#1
更多评论
楼主想要应该不是你这种写法,他想要的应该是一个可变的Type,然后用reflect或者new一个这个Type的对象,然后再用pb去unmarshal去得到这个一个真实的对象。 v.FieldByName 这个就定死了Type是不可变的了
#2
你这种要求有两种写法: http://stackoverflow.com/questions/7850140/how-do-you-create-a-new-instance-of-a-struct-from-its-type-at-runtime-in-go
#3