面试题答案
一键面试package main
import (
"fmt"
)
// 创建一个空接口类型的切片
var dataSlice []interface{}
// 存入数据到切片
func addDataToSlice(data interface{}) {
dataSlice = append(dataSlice, data)
}
// 从切片中读取数据并处理类型断言
func readDataFromSlice() {
for _, item := range dataSlice {
switch value := item.(type) {
case int:
fmt.Printf("Integer: %d\n", value)
case string:
fmt.Printf("String: %s\n", value)
case struct{ Name string; Age int }:
fmt.Printf("Struct: Name - %s, Age - %d\n", value.Name, value.Age)
default:
fmt.Printf("Unknown type\n")
}
}
}
你可以在main
函数中测试这些函数:
func main() {
addDataToSlice(10)
addDataToSlice("Hello")
addDataToSlice(struct{ Name string; Age int }{Name: "John", Age: 30})
readDataFromSlice()
}
上述代码首先创建了一个空接口类型的切片dataSlice
。addDataToSlice
函数用于将不同类型的数据添加到切片中。readDataFromSlice
函数通过switch
语句结合类型断言来处理从切片中读取的数据,并根据不同类型进行相应的输出。在main
函数中进行了简单的测试,向切片中添加整数、字符串和结构体数据,然后读取并处理这些数据。