MST

星途 面试题库

面试题:Go语言接口多态性的基础体现

在Go语言中,假设有一个接口`Animal`,包含`Speak`方法。现有`Dog`和`Cat`结构体都实现了该接口。请编写代码展示如何利用接口的多态性,在一个函数中接收`Animal`接口类型的参数,调用不同结构体实例的`Speak`方法,并打印相应的叫声。
14.9万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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接口,接着DogCat结构体分别实现了该接口的Speak方法。MakeSound函数接收Animal接口类型的参数,并调用其Speak方法。在main函数中,创建DogCat的实例并传入MakeSound函数,展示了接口的多态性。