面试题答案
一键面试package main
import "fmt"
// Animal 基础接口
type Animal interface {
Eat()
}
// Pet 嵌套 Animal 接口的接口
type Pet interface {
Animal
Play()
}
// Dog 结构体实现 Pet 接口
type Dog struct{}
// Eat 实现 Animal 接口的 Eat 方法
func (d Dog) Eat() {
fmt.Println("Dog is eating")
}
// Play 实现 Pet 接口新增的 Play 方法
func (d Dog) Play() {
fmt.Println("Dog is playing")
}
func main() {
var pet Pet
pet = Dog{}
pet.Eat()
pet.Play()
}
上述代码首先定义了Animal
接口及其Eat
方法,接着Pet
接口嵌套了Animal
接口并新增Play
方法。Dog
结构体实现了Pet
接口,复用了Animal
接口的Eat
方法逻辑。在main
函数中,通过接口类型变量pet
调用了Eat
和Play
方法。