1 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
應(yīng)用程序可以使用reflect.StructOf以編程方式創(chuàng)建結(jié)構(gòu)體,但必須導(dǎo)出該結(jié)構(gòu)體中的所有字段。
問(wèn)題將結(jié)構(gòu)體作為值獲取,但指向該結(jié)構(gòu)體的指針可能對(duì)應(yīng)用程序更有用。
鑒于上述情況,這個(gè)答案展示了如何在編譯時(shí)不定義類(lèi)型的情況下執(zhí)行以下操作:
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()
這是一個(gè)設(shè)置一些字段的可運(yùn)行示例:https ://play.golang.org/p/uik7Ph8_BRH
- 1 回答
- 0 關(guān)注
- 200 瀏覽
添加回答
舉報(bào)