当前位置: 首页 > 面试题库 >

在Go中嵌入而不是继承

邹星火
2023-03-14
问题内容

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

链接:

  • 嵌入说明

问题答案:

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

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

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



 类似资料:
  • 问题内容: 偏重于继承而不是继承 是非常流行的短语。我读了几篇文章,最后每篇文章都说 当类之间存在纯IS-A关系时,请使用继承。 本文中的一个示例: 在 Apple 和 Fruit 之间存在明显的IS-A关系,即Apple IS-A Fruit,但作者也将其显示为Apple HAS-A Fruit(组成),以显示通过继承实现时的陷阱。 我在这里变得有些困惑,声明的含义是什么 当类之间存在纯IS-A

  • 问题内容: 我是猪脚本,Hadoop,Hbase的新手。这是我需要知道的。我想运行一个Pig脚本,我不想在我的Java程序中嵌入该Pig脚本,并希望通过传递必要的Pig脚本和参数(可能是参数文件)的任何Pig Execution方法来运行它。核心Pig库或任何其他库是否提供了执行Pig脚本的方式。我已经尝试过使用Java运行时exec方法,我用空格分隔的字符串传递了一些参数,所以我放弃了通过运行时

  • 我正在Keras培训一名LSTM: 每个单元的输入是一个已知的2048向量,不需要学习(如果您愿意,它们是输入句子中单词的ELMo嵌入)。因此,这里没有嵌入层。 由于输入序列具有可变长度,因此使用

  • 问题内容: 在Go中,有可能等同于或取决于系统架构的类型。我可以声明一个整数变量而不必担心它的大小: 为什么没有type ,它等于或取决于我的系统的体系结构?我希望我也可以: 问题答案: float已在版本2011/01/20中删除。 您仍然可以使用简短的变量声明: 但正如GO常见问题解答所述: 出于可移植性的原因,我们决定以代码中的一些显式转换为代价,使事情变得清晰明了。 您可以在以下主题中查看

  • 问题内容: 我很困惑何时选择存储过程而不是代码中的嵌入式SQL 当我用谷歌搜索时,我发现了这些要点 它们允许模块化编程。 它们可以减少网络流量。 它们可以用作安全机制。 请告诉我网络流量与之有何关系? 问题答案: 他们可以通过仅将所需的数据返回给客户端来减少网络流量。 或扭转它;浪费网络流量的一种设计/编码实践是从数据库中选择一组数据,将其返回给客户端,然后在其中对某些数据集进行处理。显然,如果您

  • 问题内容: 在本文中, Nick Coghlan讨论了PEP 435类型的 一些设计决策,以及如何将其子类化以提供不同的体验。 但是,我给出的建议(我是stdlib的主要作者)关于使用元类的建议是,在没有充分好的理由的情况下不应该这样做- 例如,无法使用类装饰器或专用工具来完成所需的工作隐藏任何丑陋的功能;而在我自己的工作,我已经能够做到我需要什么简单的使用,在创建时,和/或正常类/实例方法类: