我对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