MST

星途 面试题库

面试题:Go语言中接口定义及简单多态实现

请定义一个包含 `Run` 方法的接口 `Runner`,然后定义两个结构体 `Dog` 和 `Cat` 实现这个接口,并编写一个函数 `RunAll`,接受一个 `Runner` 类型的切片,调用每个元素的 `Run` 方法以展示多态性。
33.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import "fmt"

// 定义Runner接口
type Runner interface {
    Run()
}

// 定义Dog结构体并实现Runner接口
type Dog struct{}

func (d Dog) Run() {
    fmt.Println("Dog is running")
}

// 定义Cat结构体并实现Runner接口
type Cat struct{}

func (c Cat) Run() {
    fmt.Println("Cat is running")
}

// 定义RunAll函数,接受Runner类型的切片并调用每个元素的Run方法
func RunAll(runners []Runner) {
    for _, runner := range runners {
        runner.Run()
    }
}

你可以在main函数中这样使用:

func main() {
    var runners []Runner
    runners = append(runners, Dog{})
    runners = append(runners, Cat{})
    RunAll(runners)
}