go - 名称为空的方法的目的是什么?

标签 go methods identifier

我刚开始学习golang,在阅读规范的过程中,我发现了一些我无法自己解决的问题。在有关方法声明的部分中,语言规范说“如果基类型是结构类型,则非空白方法和字段名称必须不同。”

https://golang.org/ref/spec#Method_declarations

据我了解,名称为空的方法是

func (t T) _() {
  // some cool code
}

那么,我该如何使用它以及这些方法的主要目的是什么?

最佳答案

没有真正的空白方法名称的目的,你不能以任何方式调用它们(即使通过反射,它们也不会出现在该类型的(导出的)方法中,参见 Go Playground ) .只是语言规范没有明确禁止。

方法名称是:

MethodName     = identifier .

方法名可以是任何有效的 identifier :

identifier     = letter { letter | unicode_digit } .
letter         = unicode_letter | "_" .
unicode_letter = /* a Unicode code point classified as "Letter" */ .
unicode_digit  = /* a Unicode code point classified as "Number, decimal digit" */ .

短语“非空白方法和字段名称必须不同”仅表示方法(和字段)名称必须不同,但您可以添加 2 个单独的空白方法,它们不会冲突。空白方法的名称不会与任何内容发生冲突,包括其他空白方法。

关于go - 名称为空的方法的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55781493/

相关文章:

macos - 链接器 stub 文件警告

go - 通过另一个结构字段的类型声明结构字段的类型

go - 在golang中,&和*有什么区别

java - 为什么标识符中不允许使用#?

java - java中如何找出对象的标识符?

javascript - 实时推送通知 golang

c# - 将 PHP 转换为 .Net C#

java - 内置类中的方法

Javascript,对象原型(prototype) - 避免编写完整路径

initWithProximityUUID 中的 iOS ibeacon 标识符 :(NSUUID *)proximityUUID identifier:(NSString *)identifier?