为了账号安全,请及时绑定邮箱和手机立即绑定

Go中通过反射创建结构体

Go中通过反射创建结构体

Go
Qyouu 2023-07-17 13:50:24
我想完全动态地定义一个结构体,以便我可以获得以下结构体,但不需要先定义它?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


查看完整回答
反对 回复 2023-07-17
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信