Golang嵌入式结构

Golang嵌入式结构,第1张

Golang嵌入式结构

因此,您在这里遇到了Go的特质。嵌入是一种方法,它可以“提升”一个结构的方法以使其似乎存在于另一个结构上。尽管

type NodeProperties
应该直观地了解这些
Properties
方法
Node
,但该语法的作用是继承其方法
Node
的内存布局,
Properties
而不是其所有方法的内存布局。

它没有解释为什么做出这种设计选择,但是Go
Spec
至少是特定的(如果干燥的话)。如果您完全按原样阅读它,没有任何解释,那么它是非常准确的:

接口类型的方法集是其接口。任何其他类型T的方法集都包含以接收者类型T声明的所有方法

GetString
的接收器类型
Properties
不是not
Node
,认真地将规范解释为您是没有想象力的会计师。照这样说:

进一步的规则适用于包含匿名字段的结构,如有关结构类型的部分中所述。

如果xf是表示该字段或方法f的合法选择器,则将结构x中匿名字段的字段或方法f称为提升。

提升的字段的作用类似于结构的普通字段,只是它们不能用作结构的复合文字中的字段名称。

给定一个结构类型S和一个名为T的类型,在该方法的方法集中包括了以下改进的方法:

  • 如果S包含匿名字段T,则S和 S的方法集都包括接收者T的提升方法。 S的方法集也包括接收者* T的提升方法。
  • 如果S包含一个匿名字段 T,则S和 S的方法集都包括接收者T或* T的提升方法。

关于复合文字的这一行迫使您

Properties
在每次
Node
创建的内容中进行声明。

ps杰夫!



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5086731.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-16
下一篇2022-11-16

发表评论

登录后才能评论

评论列表(0条)

    保存