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 
} 

它使生活更轻松,当你嵌套复合类型的几个层次深。