規則是,方法只能在指定類型和指向指定類型的指針上定義。GO - 方法重新聲明的錯誤
對於下面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編譯器,爲什麼對不同類型定義的方法被認爲是 一樣嗎?
因爲這個錯誤,我怎麼知道,爲所允許的類型來定義什麼方法? – overexchange
的可能的複製[GO - 爲什麼隱式非指針的方法不能滿足接口(http://stackoverflow.com/questions/41922181/go-why-implicit-non-pointer-methods-not-satisfy-interface) –
@ dev.bmax你怎麼認爲它是重複的?如果這個查詢得到答案愛德,然後請分享它 – overexchange