我现在有这个结构
type ServiceStruct struct {
Name string `json:"name"`
DataStruct struct {
ID string `json:"id"`
Size string `json:"size"`
}
}
但是我不知道如何为这个结构中的元素赋值。特别是ServiceStruct中的DataStruct
答案 0 :(得分:1)
您可以使用匿名结构文字(需要复制粘贴DataStruct
的类型),或使用=
为各个字段指定值。
package main
import (
"fmt"
)
type ServiceStruct struct {
Name string `json:"name"`
DataStruct struct {
ID string `json:"id"`
Size string `json:"size"`
}
}
func main() {
s1 := ServiceStruct{
Name: "foo",
DataStruct: struct {
ID string `json:"id"`
Size string `json:"size"`
}{
ID: "bar",
Size: "100",
},
}
s2 := ServiceStruct{
Name: "foo",
}
s2.DataStruct.ID = "bar"
s2.DataStruct.Size = "100"
fmt.Println(s1)
fmt.Println(s2)
// Output:
// {foo {bar 100}}
// {foo {bar 100}}
}
或者,考虑给出DataStruct
类型的名称,以便您可以在struct literal中引用它而不是copy-pasting(不推荐)。
答案 1 :(得分:1)
https://play.golang.org/p/GObadB9WyN
将JSON传递/解组到结构中的示例。这是我的主要用例,我希望它有用。
package main
import (
"fmt"
"encoding/json"
)
type ServiceStruct struct {
Name string `json:"name"`
DataStruct struct {
ID string `json:"id"`
Size string `json:"size"`
}
}
func main() {
x := `{
"Name": "Fido",
"DataStruct": {
"ID": "Dog",
"Size": "Small"
}
}`
ex := ServiceStruct{}
json.Unmarshal([]byte(x), &ex)
fmt.Println(ex.Name)
}