我想完全動態地定義一個結構體,以便我可以獲得以下結構體,但不需要先定義它?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 關注
- 231 瀏覽
添加回答
舉報
0/150
提交
取消