世纪de光
2020-12-21 15:39
这样写的确是实现了多态,但Dog和Cat并没有显式实现Behavior这个接口,而编译器就已经将其做了关联。为什么不需要像Java一样的implements 显式实现接口?
func main() { dog := Dog{Name: "wangwang", Age: 2} cat := Cat{Name: "mimi", Age: 2} fmt.Println(dog.Eat()) fmt.Println(dog.Run()) fmt.Println(cat.Eat()) fmt.Println(cat.Run()) } type Animal struct { Kind string } type Cat struct { Animal Name string Age int } func (cat *Cat) Eat() string { return "cat: eat" } func (cat *Cat) Run() string { return "cat: run" } type Dog struct { Animal Name string Age int } func (dog *Dog) Eat() string { return "dog: eat" } func (cat *Dog) Run() string { return "dog: run" } type Behavior interface { Eat() string Run() string }
点击一下接口方法 能跳过去 就说明实现了呗
Go语言语法进阶指南
11391 学习 · 27 问题
相似问题