面试题答案
一键面试package main
import "fmt"
// 定义Animal接口
type Animal interface {
Speak() string
}
// Dog结构体实现Animal接口
type Dog struct{}
func (d Dog) Speak() string {
return "汪汪汪"
}
// Cat结构体实现Animal接口
type Cat struct{}
func (c Cat) Speak() string {
return "喵喵喵"
}
// 定义接收Animal接口类型参数的函数
func MakeSound(a Animal) {
fmt.Println(a.Speak())
}
你可以使用以下方式调用这个函数:
func main() {
dog := Dog{}
cat := Cat{}
MakeSound(dog)
MakeSound(cat)
}
上述代码首先定义了Animal
接口,接着Dog
和Cat
结构体分别实现了该接口的Speak
方法。MakeSound
函数接收Animal
接口类型的参数,并调用其Speak
方法。在main
函数中,创建Dog
和Cat
的实例并传入MakeSound
函数,展示了接口的多态性。