一尘不染

在Go中嵌入而不是继承

go

您对此设计决定有何看法?它有什么优点和缺点?

链接:


阅读 264

收藏
2020-07-02

共1个答案

一尘不染

在注释中,您想知道嵌入的想法是否足以“完全替换继承”。我会说这个问题的答案是“是”。几年前,我使用名为Snit的Tcl
OO系统进行了非常简短的介绍,该系统使用组合和委派来排除继承。Snit与Go的方法仍然有很大不同,但是在这一方面,它们具有一些共同的哲学基础。这是一种将功能和职责结合在一起的机制,而不是类的层次结构。

正如其他人所说,这实际上是语言设计人员要支持哪种编程实践。所有这些选择都各有利弊。我认为“最佳做法”不是在这里必须适用的短语。我们可能最终会看到有人为Go开发继承层。

(对于熟悉Tcl的所有读者,我都觉得Snit比该语言的“感觉”更接近匹配。Tcl完全[incr Tcl]是关于委派的,至少是我的思维方式。)

2020-07-02