MST

星途 面试题库

面试题:Go语言多返回值类型断言与接口实现

定义一个接口 `ResultGetter`,其中包含一个方法 `GetResult`,该方法返回多个 `interface{}` 类型的值。然后实现一个结构体 `ComplexCalculator` 实现这个接口,`GetResult` 方法返回不同类型的值(如整数、字符串、自定义结构体等)。接着编写一个函数 `ProcessResults`,它接收一个 `ResultGetter` 类型的参数,调用 `GetResult` 方法并通过类型断言对返回的多个值进行适当的处理,同时要考虑到类型断言失败的情况并进行合理的错误处理。
37.1万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
	"fmt"
)

// 定义接口ResultGetter
type ResultGetter interface {
	GetResult() []interface{}
}

// 定义自定义结构体
type CustomStruct struct {
	Message string
}

// 实现ComplexCalculator结构体并实现ResultGetter接口
type ComplexCalculator struct{}

func (cc ComplexCalculator) GetResult() []interface{} {
	return []interface{}{
		10,         // 整数
		"Hello",    // 字符串
		CustomStruct{Message: "Custom Data"}, // 自定义结构体
	}
}

// 定义ProcessResults函数
func ProcessResults(rg ResultGetter) {
	results := rg.GetResult()
	for _, result := range results {
		switch v := result.(type) {
		case int:
			fmt.Printf("处理整数: %d\n", v)
		case string:
			fmt.Printf("处理字符串: %s\n", v)
		case CustomStruct:
			fmt.Printf("处理自定义结构体: %+v\n", v)
		default:
			fmt.Printf("不支持的类型: %T\n", v)
		}
	}
}

你可以使用以下方式调用:

func main() {
	cc := ComplexCalculator{}
	ProcessResults(cc)
}