我對Golang來說還是比較新的。我知道Golang中有Struct。但就我所知,你必須定義結構Golang動態創建Struct的成員
type Circle struct{
x,y,r float64
}
我想知道如何聲明不會在結構
circle := new(Cirlce)
circle.color = "black"
THX預先存在的新的變量。
我對Golang來說還是比較新的。我知道Golang中有Struct。但就我所知,你必須定義結構Golang動態創建Struct的成員
type Circle struct{
x,y,r float64
}
我想知道如何聲明不會在結構
circle := new(Cirlce)
circle.color = "black"
THX預先存在的新的變量。
您將需要使用地圖(的map[string]interface{}
型)動態JSON工作。下面是一個創建新地圖的例子:
// Initial declaration
m := map[string]interface{}{
"key": "value",
}
// Dynamically add a sub-map
m["sub"] = map[string]interface{}{
"deepKey": "deepValue",
}
解組JSON成圖的樣子:
var f interface{}
err := json.Unmarshal(b, &f)
上面的代碼會留給你一個地圖中f
,具有類似的結構:
f = map[string]interface{}{
"Name": "Wednesday",
"Age": 6,
"Parents": []interface{}{
"Gomez",
"Morticia",
},
}
您將需要使用一個類型斷言來訪問它,否則去不知道這是一個地圖:
m := f.(map[string]interface{})
您還需要在您從地圖中拉出的每個項目上使用斷言或類型開關。處理非結構化的JSON是一件麻煩事。
的更多信息:
你不能。 Go是靜態類型的,並且不允許這樣的構造。
結構在內存中有一個與定義直接相關的佈局,並且沒有存儲此類附加字段的位置。
您可以改爲使用地圖。此外,您可以使用&circle
作爲鍵或鍵的一部分,將地圖元素與任意結構關聯。
type key struct {
target interface{}
field string
}
x := make(map[key]string)
x[key{ target: circle, field: "color" }] = "black"
也許我需要重新短語我的問題。假設我想構建一個json主體。我不知道json的內部結構是什麼。我怎樣才能創建一個這樣的地圖? –
瀏覽https://tour.golang.org,它會告訴你關於地圖和其他許多你需要的東西。然後,正如其他人所說,'map [string] interface {}'是具有未知鍵和值類型的JSON對象的類型([] interface {}是具有未知元素類型的JSON數組)。 – twotwotwo