关于go:Go题库3Go语言中是如何实现继承的

37次阅读

共计 1044 个字符,预计需要花费 3 分钟才能阅读完成。

面试企业 百度

解析整顿 GOLANG ROADMAP 社区

答案 (溪尾)

对于 Go 语言是否像 C ++、Java 一样是面向对象的语言,官网给出的解释如下:

Yes and no. Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy. The concept of“interface”in Go provides a different approach that we believe is easy to use and in some ways more general. There are also ways to embed types in other types to provide something analogous—but not identical—to subclassing. Moreover, methods in Go are more general than in C++ or Java: they can be defined for any sort of data, even built-in types such as plain,“unboxed”integers. They are not restricted to structs (classes).

Also, the lack of a type hierarchy makes“objects”in Go feel much more lightweight than in languages such as C++ or Java.

翻译:

是, 也不是. 尽管 Go 语言能够通过定义类型和办法来实现面向对象的设计格调, 然而 Go 实际上并没有继承这一说法. 在 Go 语言中,interface(接口) 这个概念以另外一种角度展示了一种更加易用与通用的设计办法. 在 Go 中, 咱们能够通过组合, 也就是将某个类型放入另外的一个类型中来实现相似继承, 让该类型提供有共性但不雷同的性能. 相比起 C ++ 和 Java,Go 提供了更加通用的定义函数的办法, 咱们能够指定函数的承受对象 (receiver), 它能够是任意的类型, 包含内建类型, 在这里没有任何的限度。

同样的, 没有了类型继承, 使得 Go 语言在面向对象编程的方面会显得更加轻量化。

在 Go 语言中,能够通过构造体组合来实现继承,示例如下:

// 这里 Student 继承了 People,具备 People 的属性
type People struct {Name string}

type Student struct{
    People
    Grade int
}

正文完
 0