知识卡片

具名聚合与匿名嵌入的字段提升差异

专业/工作 · 473.a.1.a.2.b.1

内容

把一个结构体类型放进另一个结构体里,写法上只差一个变量名——写Names Person是具名字段(聚合),访问必须经过author.Names.Surname;不写变量名、直接写Person是匿名字段(嵌入),Person内部的字段会被”提升”到外层,可以直接写`autho发散:选具名还是匿名取决于”外层类型要不要顺带获得内部类型的能力”——聚合表达的是纯粹的”有一个”关系(作。

参考来源

- 位置:《Go语言程序设计》第6章《面向对象编程》(源文件:_epub-src/OEBPS/text00040.html) - 结论依据:原文在该章节围绕“把一个结构体类型放进另一个结构体里,写法上只差一个变量名——写`NamesPerson`是具名字段(聚合),访…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:renames []string // 具名字段(聚合) Surname string // 具名字段(聚合) } type Author1 struct { Names Person // 具名字段(聚合) Title []string // 具名字段(聚合) YearBorn int // 具名字段(聚合) } 在前面的章节中,我们看…