1 回答

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