面试题答案
一键面试package main
import (
"fmt"
)
// 定义一个自定义结构体
type CustomStruct struct {
Name string
}
func main() {
var data []interface{}
data = append(data, 10, "hello", CustomStruct{Name: "example"})
for _, value := range data {
// 使用类型断言结合类型开关
switch v := value.(type) {
case int:
fmt.Printf("This is an int: %d\n", v)
case string:
fmt.Printf("This is a string: %s\n", v)
case CustomStruct:
fmt.Printf("This is a CustomStruct: %+v\n", v)
default:
fmt.Printf("Unrecognized type\n")
}
}
}
通过类型开关进行类型断言,这样可以在一次遍历中处理多种类型,且在类型不匹配时通过 default
分支进行处理,保证了代码的健壮性,同时这种方式在 Go 语言中也是较为高效的处理方式。