gpt4 book ai didi

inheritance - 继承是 Go 中嵌入式结构的特例吗?

转载 作者:IT王子 更新时间:2023-10-29 01:48:46 25 4
gpt4 key购买 nike

在 Go 中,type Txt string 只是 type Txt struct {string} 的快捷方式吗?

最佳答案

您所有问题的答案都是响亮的“不!”。

  1. string 嵌入到结构中基本上是一个无用的嵌入示例,因为 string 没有可以提升为嵌入类型的方法。

  2. 构造 type Txt string 定义了一个名为 Txt 的新类型,底层类型是一个字符串。 Txt 具有不同的方法集,因为它是不同的类型。但由于它的底层类型是 string,您可以自由地类型转换它们。

  3. type T string 不是 type S struct { string } 的快捷方式,例如你做不到t := T{"foo"},只有 t := T("foo") 有效,对于 S 是另一种方式大约。

  4. 嵌入与继承完全没有关系。这是两个不同的东西。用嵌入模仿继承注定要失败,因为你不能在 Go 中进行继承。 (这是一个一般性的建议,这是一个非常有用的建议;但是一些特定的继承问题可能可以通过嵌入来解决。忘记继承,你会更快乐。)

  5. 如果两种类型具有共同的数据和方法,则嵌入很有用,在这种情况下,嵌入提供了一些不错的语法糖:而不是 type T struct { c common; r 休息 }; t := T{...}; t.common.method() 你可以做 type T struct { common; r 休息 }; t := T{...}; t.method() 省去了输入,但基本上是相同的代码。包测试包含很好的例子。

关于inheritance - 继承是 Go 中嵌入式结构的特例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23493647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com