【问题标题】:What is purpose of methods with blank names?具有空白名称的方法的目的是什么?
【发布时间】:2019-09-10 21:13:42
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我认为 Go 中没有这样的东西。试着在操场上做一个例子。
  • @apxp 至少编译this code
  • @apxp 至少为纵梁接口生成创建空白函数

标签: go methods identifier


【解决方案1】:

拥有空白方法名称没有真正的目的,并且您不能以任何方式调用它们(甚至不能通过反射,它们不会出现在该类型的(导出)方法中,请参阅@987654321 @)。语言规范没有明确禁止它。

方法名是:

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 个单独的空白方法,它们不会发生冲突。空白方法的名称不会与任何东西发生冲突,包括其他空白方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-28
    • 2011-11-02
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    相关资源
    最近更新 更多