我正在尝试使用Golang中的接口实现来实现一个比较逻辑。我需要找到不同结构的差异。
所以我试着这样做
package main
import "fmt"
type foo interface {
diff(f foo) bool
}
type baz struct {
i int
}
func (b baz) diff(eb baz) bool {
return b.i != eb.i
}
func main() {
b1 := baz{1}
b2 := baz{2}
if b1.diff(b2) {
fmt.Println("data is different")
} else {
fmt.Println("data is same")
}
}它工作得很好。但是我需要确认Golang是否支持这种类型的接口实现,其中方法接受相同的接口。
发布于 2021-02-09 19:01:51
在golang中,它的核心没有面向对象的概念,所以它没有实现。引用https://tour.golang.org/methods/10,所以当你实现接口时,它将与其他语言不同,这意味着你的类将拥有表示接口方法的所有方法,但对于golang,当你的结构具有与接口中的方法相同的方法时,你的结构的方法将显式地满足接口,就像你可以使用结构的方法一样。
如果你结构有比接口方法更多的方法,当你调用接口方法时,你仍然可以使用你的方法(满足接口)。
https://stackoverflow.com/questions/66085992
复制相似问题