我想完全动态地定义一个结构体,以便我可以获得以下结构体,但不需要先定义它?type Data struct { a string b int `json:"b"`}d := Data{}
1 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
应用程序可以使用reflect.StructOf以编程方式创建结构体,但必须导出该结构体中的所有字段。
问题将结构体作为值获取,但指向该结构体的指针可能对应用程序更有用。
鉴于上述情况,这个答案展示了如何在编译时不定义类型的情况下执行以下操作:
type Data struct {
A string `json:"a"`
B int `json:"b"`
}
var d interface{} = &Data{}
代码是:
t := reflect.StructOf([]reflect.StructField{
{
Name: "A",
Type: reflect.TypeOf(int(0)),
Tag: `json:"a"`,
},
{
Name: "B",
Type: reflect.TypeOf(""),
Tag: `json:"B"`,
},
})
d := reflect.New(t).Interface()
这是一个设置一些字段的可运行示例:https ://play.golang.org/p/uik7Ph8_BRH
- 1 回答
- 0 关注
- 142 浏览
添加回答
举报
0/150
提交
取消