怎么知道Dog和Cat就实现了Behavior接口呢?

来源:4-1 接口--概念及实现

世纪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
}


写回答 关注

1回答

  • 慕粉1348343476
    2020-12-24 19:39:58

    点击一下接口方法 能跳过去 就说明实现了呗

Go语言语法进阶指南

了解Go语言各种高级用法,快速提高开发效率

11391 学习 · 27 问题

查看课程

相似问题