Pie*_*tti 1 inheritance struct go
在Go中,type Txt string只是一个快捷方式type Txt struct {string}?
你所有问题的答案都是响亮的"不!".
string将a 嵌入到struct中基本上是一个无用的嵌入示例,因为string没有可以升级到嵌入类型的方法.
该构造type Txt string定义了一个名为Txt的新类型,底层类型是一个字符串.Txt有不同的方法设置,因为它是一个不同的类型.但是作为它的基础类型,string你可以自由地键入它们.
type T string不是快捷方式type S struct { string },例如你不能做
t := T{"foo"},只有t := T("foo")工作,而S它是另一种方式.
嵌入与继承完全没有关系.这是两件不同的事情.使用嵌入来模仿继承注定会失败,因为你无法在Go中继承.(这是一般性建议,它是一个非常有用的建议;但是一些特定的继承问题可能是嵌入式的.只要忘记继承,你就会更快乐.)
如果两种类型具有共同的数据和方法,嵌入是有用的,在这种情况下,嵌入提供了一些很好的语法糖:而不是type T struct { c common; r rest }; t := T{...}; t.common.method()你可以做type T struct { common; r rest }; t := T{...}; t.method()哪些节省输入,但基本上是相同的代码.包测试包含很好的例子.