MST

星途 面试题库

面试题:Go方法表达式与类型断言的复杂结合应用

假设有一个接口 `Job`,包含 `Execute` 方法。有两个结构体 `TaskA` 和 `TaskB` 都实现了 `Job` 接口。在一个函数中,接收一个 `interface{}` 类型的参数,通过类型断言判断参数实际类型,如果是 `TaskA` 或 `TaskB`,则使用方法表达式调用其 `Execute` 方法。`Execute` 方法在 `TaskA` 中打印 "Executing TaskA",在 `TaskB` 中打印 "Executing TaskB"。请完整实现这个功能。 ```go package main import "fmt" type Job interface { Execute() } type TaskA struct{} func (t TaskA) Execute() { fmt.Println("Executing TaskA") } type TaskB struct{} func (t TaskB) Execute() { fmt.Println("Executing TaskB") } func process(job interface{}) { // 在此处实现通过类型断言判断并使用方法表达式调用Execute方法 } ```
35.0万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import "fmt"

type Job interface {
    Execute()
}

type TaskA struct{}

func (t TaskA) Execute() {
    fmt.Println("Executing TaskA")
}

type TaskB struct{}

func (t TaskB) Execute() {
    fmt.Println("Executing TaskB")
}

func process(job interface{}) {
    if taskA, ok := job.(TaskA); ok {
        taskA.Execute()
    } else if taskB, ok := job.(TaskB); ok {
        taskB.Execute()
    }
}