Ily*_*yev 3 methods identifier go
我刚刚开始学习golang,在阅读规范时发现了一个我自己无法解决的问题。在有关方法声明的部分中,语言规范说:“如果基本类型是结构类型,则非空白方法和字段名称必须不同。”
https://golang.org/ref/spec#Method_declarations
据我了解,带有空白名称的方法是
func (t T) _() {
// some cool code
}
Run Code Online (Sandbox Code Playgroud)
那么,我该如何使用它?这些方法的主要目的是什么?
拥有空白方法名称并没有真正的目的,并且您不能以任何方式调用它们(即使通过反射也不可以,它们不会出现在该类型的(导出的)方法中,请参见Go Playground上的内容)。语言规范没有明确禁止它。
方法名称为:
Run Code Online (Sandbox Code Playgroud)MethodName = identifier .
方法名称可以是任何有效标识符:
Run Code Online (Sandbox Code Playgroud)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个单独的空白方法,它们不会冲突。空方法的名称不会与任何东西冲突,包括其他空方法。