从结构定义中定义Go方法有什么好处?

艾瓦尔

Go允许人们将定义的方法与其工作的结构/数据类型分开定义。这是否意味着在放置方法定义或其他方面具有灵活性?

我听说过Go的struct / methods系统已与猴子补丁程序进行了比较,但是如果我理解正确,那么您真的无法将方法添加到任何现有类型(struct)中,因为方法必须与该类型位于同一包中。就是 无论如何,您只能猴子修补受您控制的类型。还是我错过了什么?

在哪种情况下,您将在单独的源文件中(或在同一源文件的不同部分中)定义类型及其方法?

丹尼斯·塞古雷

这是基于类型的语言的优势:您可以根据需要组织文件:

  • 您可以将所有类似的功能放在一起,即使接收器类型很多
  • 您可以拆分一个文件,否则文件可能太大

通常,Go不会添加没有用的约束。那么答案也可能是“为什么不”

您真的不能将方法添加到任何现有类型(结构)中,因为方法必须与该类型位于同一包中

如果可以,在两个不同包中的相同结构上使用相同函数名称的情况下,您可能无法确定要调用哪个函数。否则会使某些软件包不兼容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将clojure中的“或”操作定义为宏而不是简单地定义为函数有什么好处?

定义自定义异常有什么好处?

使用关联的对象与类别实现文件中定义的静态对象有什么好处?

在一个类中定义一个公共枚举有什么好处?

将引用定义为函数调用 - 有什么好处?

方法中的代码块有什么好处?

不变结构比可变结构有什么好处?

从Go中的实例打印结构定义

允许在函数定义的返回类型中定义结构有什么处理?(C)

没有定义的结构意味着什么?

结构中的结构定义

在R中的另一个函数中定义和调用一个函数有什么好处?

结构定义中的'='标记前应有''

静态方法有什么好处?

根据现有结构的定义定义结构

释放结构中定义的数组的正确方法

有什么方法可以在Linux中创建用户定义的信号?

有什么方法可以获取模块中定义的功能列表?

有什么方法可以在c ++中重新定义数组?

在Java中,方法局部内部类有什么好处?

在 render 方法中调用 SFC 函数有什么好处吗?

为什么将类型定义为指向C中未定义结构的指针有效?

什么时候在一个结构中定义多个生存期有用?

为什么从winapi复制到我的代码中的结构定义没有相同的行为?

结构定义中的结构指针

有没有一种方法可以在Verilog中定义类似C的结构

为什么带有匿名结构字段的结构不满足在该类型的别名上定义的方法?

Golang基本结构在子结构中定义方法

用于Go中结构的自定义扫描仪