【发布时间】:2017-06-15 01:53:18
【问题描述】:
规则是,方法只能在命名类型和指向命名类型的指针上定义。
对于下面的code,
package main
type Cat struct {
}
func (c Cat) foo() {
// do stuff_
}
func (c *Cat) foo() {
// do stuff_
}
func main() {
}
编译器报错:
main.go:10: method redeclared: Cat.foo
method(Cat) func()
method(*Cat) func()
以上代码定义,
方法foo() 用于命名类型(Cat)和
方法 foo() 用于指向命名类型的指针 (*Cat)。
问题:
对于 GO 编译器,为什么要考虑为不同类型定义的方法 一样吗?
【问题讨论】:
-
出现这个错误,我怎么知道,要为允许的类型定义什么方法?
-
@dev.bmax 你怎么认为它是重复的?如果此查询得到答案 Ed 那么请分享它
-
你启动的三个线程都是一样的。您采用一种语言功能,这对您来说毫无意义,并且您试图发现语言方法中的不一致之处。但是,社区每次都证明你错了。最后,您不接受得到文档和示例充分支持的答案,仅仅是因为它们不符合您的直觉。
-
@dev.bmax 看到你的回答后,我觉得这应该是我的第一个问题。我不是来接受你的答案,而是来学习。