Go是关于继承的组合。可悲的是,你使用匿名结构,但鉴于你显然试图JSON编组他们,你将它们定义为类型的更好:
type name struct {
Name string `json:"name"`
}
type desc struct {
Description string `json:"description"`
}
struct{}{init}
a := name{"foo"}
b := desc{"Description"}
然后你可以以任何方式将它们组合起来,你想通过写
c := struct {
name
description
}{a, b}
一个怪癖(可能跳闸ÿ ou起初),你必须习惯于写这种类型时,你是如何初始化成员的。假设你决定创建,结合了另外两种结构类型:
type foo struct {
name
description
}
你不能初始化它是这样的:
o := foo{"Name value", "description value"}
namec := struct{}{a, b}
o := foo{
name{"Name value"},
description{Description: "Description val"},//optional with field names
}
的在线复合建成。
取决于你想要做什么,有时更容易编写这样的事:
func (s *MyCompositeType) CopyName(n name) {
s.Name = n.Name
//copy other fields
}
它使生活更轻松,当你嵌套复合类型的几个层次深。