具有空白名称的方法的目的是什么?

问题描述 投票:3回答:1

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

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

据我所知,空白名称的方法是

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

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

go methods identifier
1个回答
7
投票

没有真正意图有空白的方法名称,你不能以任何方式调用它们(甚至不通过反射,它们不会出现在该类型的(导出)方法中,请参阅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个单独的空白方法,它们不会发生冲突。空白方法没有与任何内容发生冲突的名称,包括其他空白方法。

© www.soinside.com 2019 - 2024. All rights reserved.