Types 如何实现()方法?

Types 如何实现()方法?,types,interface,go,overloading,Types,Interface,Go,Overloading,我发现一个接口中有一个名为\uuu的方法。我尝试过实现它,但它不起作用: package main func main() {} func ft(t T) { fi(t) } func fi(I) {} type I interface { _() int } type T struct {} func (T) _() int { return 0 } func (T) _(int) int { return 0 } 我还尝试添加重载方法(int),但这也不起作用: pack

我发现一个接口中有一个名为
\uuu
的方法。我尝试过实现它,但它不起作用:

package main
func main() {}

func ft(t T) { fi(t) }
func fi(I) {}

type I interface {
    _() int
}

type T struct {}

func (T) _() int { return 0 }
func (T) _(int) int { return 0 }
我还尝试添加重载方法
(int)
,但这也不起作用:

package main
func main() {}

type I interface {
    _() int
    _(int) int
}

type T struct {}

func (T) _() int { return 0 }
func (T) _(int) int { return 0 }
为什么??此
方法的目的是什么?我认为这可能是一种阻止人们实现接口(如Java中的私有接口)的方法?

\u
是“空白标识符”(blank identifier)并且有特殊的规则。具体而言:

空白标识符可以像声明中的任何其他标识符一样使用,但它不会引入绑定,因此不会被声明

另请注意,关于接口()的部分说:

每个方法必须具有唯一的非空名称


因此,该接口甚至不是有效的go;编译器显然接受这一事实是一个bug。无论哪个包声明它真的不应该这样做。

根据我对规范的阅读,我已经提交了一份错误报告,看看开发人员说什么会很有趣:。。。关闭为“工作已结束”
package main
func main() {}

type I interface {
    _() int
    _(int) int
}

type T struct {}

func (T) _() int { return 0 }
func (T) _(int) int { return 0 }
$ go run a.go 
# command-line-arguments
./a.go:12: internal compiler error: sigcmp vs sortinter _ _