Go中通过反射创建结构体

我想完全动态地定义一个结构体,以便我可以获得以下结构体,但不需要先定义它?


type Data struct {

   a string

   b int `json:"b"`

}

d := Data{}


Qyouu
浏览 143回答 1
1回答

素胚勾勒不出你

应用程序可以使用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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go