我在 golang 中有两个结构如下
type Data struct {
Name string
Description string
HasMore bool
}
type DataWithItems struct {
Name string
Description string
HasMore bool
Items []Items
}
最多DataWithItems
struct可以重写为
type DataWithItems struct {
Info Data
Items []Items
}
但是上面的内容使得将 json 对象解码为 DataWithItems
变得困难。我知道这可以通过其他编程语言中的继承来解决,但是 我可以在 Go 中解决这个问题吗?
最佳答案
您可以将一个结构“嵌入”到另一个结构中:
type Items string
type Data struct {
Name string
Description string
HasMore bool
}
type DataWithItems struct {
Data // Notice that this is just the type name
Items []Items
}
func main() {
d := DataWithItems{}
d.Data.Name = "some-name"
d.Data.Description = "some-description"
d.Data.HasMore = true
d.Items = []Items{"some-item-1", "some-item-2"}
result, err := json.Marshal(d)
if err != nil {
panic(err)
}
println(string(result))
}
这打印
{"Name":"some-name","Description":"some-description","HasMore":true,"Items":["some-item-1","some-item-2"]}
关于go - 在 golang 的另一个结构中重用结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53528573/