今天有人在论坛上问我,怎么在不使用内嵌的方式下更好的使用继承。很重要的一点是,每个人都应当考虑 Go 而不是他们使用的其他语言。我不会告诉你我在 Go 的早期实现中删除了多少代码,因为这些都不重要。语言设计师拥有多年的经验和知识,事后审校有助于创建一个快速、精简而有趣的语言。
我认为 Go 是一个很不错的面向对象编程语言。诚然,它有封装和类型成员方法,但是它还是缺少继承和传统的多态性。对于我来说,继承用处不大,除非你想要实现多态。Go 实现了接口类型,所以继承就显得不那么重要了。Go 完成了 OOP 最佳的部分,省略了其余部分并为我们提供了更好的编写多态代码的方法。
以下是 Go 中关于 OOP 的一个简单描述。最开始是三个结构:
你可能在其他的 OOP 编程示例中见过这三个结构。我们有一个基础结构和两个基于这个基础结构衍生来的结构。结构 Animal 包含所有动物的共性,而另外两个结构则特指猫和狗。
结构 Animal 的所有的成员属性除了私有的 mean 以外都是公有的,私有属性以小写字母开头。在 Go 中,对于变量、结构、属性和方法等,由第一个字母决定其访问规范。大写字母表示公有,而小写字母表示私有。
注:Go 中的私有和公有的概念并不完全正确。
https://www.ardanlabs.com/blog/2014/03/exportedunexported-identifiers-in-go.htm