面试题答案
一键面试思路阐述
- 首先定义一个函数,该函数接收一个空接口类型的参数。
- 使用类型断言判断参数的实际类型。如果是
int
类型,执行与整数相关的业务逻辑。 - 使用类型断言判断参数的实际类型。如果是
string
类型,执行与字符串相关的业务逻辑。 - 使用类型断言判断参数的实际类型。如果是自定义结构体类型,执行与结构体相关的业务逻辑。
- 当传入的参数类型不匹配任何已处理的类型时,可以给出相应的提示。
代码示例
package main
import (
"fmt"
)
// 定义自定义结构体
type MyStruct struct {
Field1 string
Field2 string
}
// 定义处理函数
func process(i interface{}) {
switch v := i.(type) {
case int:
fmt.Printf("接收到的是int类型,值为: %d\n", v)
case string:
fmt.Printf("接收到的是string类型,值为: %s\n", v)
case MyStruct:
fmt.Printf("接收到的是MyStruct类型,Field1: %s, Field2: %s\n", v.Field1, v.Field2)
default:
fmt.Printf("不支持的类型: %T\n", i)
}
}
可以使用以下方式调用这个函数:
func main() {
var num int = 10
var str string = "hello"
var s MyStruct = MyStruct{Field1: "value1", Field2: "value2"}
process(num)
process(str)
process(s)
// 测试不支持的类型
var f float32 = 3.14
process(f)
}
在上述代码中:
- 定义了一个
MyStruct
结构体,包含两个string
类型的字段。 process
函数通过类型分支switch
对传入的空接口类型参数i
进行类型判断,并执行相应的业务逻辑。- 在
main
函数中,创建了不同类型的变量并调用process
函数进行测试。当传入不支持的类型时,会输出不支持的类型信息。