面试题答案
一键面试package main
import "fmt"
// Animal 基础接口
type Animal interface {
Speak() string
}
// Dog 接口继承自Animal并新增Run方法
type Dog interface {
Animal
Run() string
}
// Labrador 结构体实现Dog接口
type Labrador struct {
Name string
}
func (l Labrador) Speak() string {
return fmt.Sprintf("%s says woof", l.Name)
}
func (l Labrador) Run() string {
return fmt.Sprintf("%s is running", l.Name)
}
// 接受Dog接口类型参数并调用Speak和Run方法的函数
func DoActions(d Dog) {
fmt.Println(d.Speak())
fmt.Println(d.Run())
}
你可以这样调用:
func main() {
lab := Labrador{Name: "Buddy"}
DoActions(lab)
}