package main
import (
"fmt"
)
func main() {
var data []interface{}
data = append(data, 10)
data = append(data, "hello")
for _, value := range data {
switch v := value.(type) {
case int:
fmt.Printf("这是一个整数: %d\n", v)
case string:
fmt.Printf("这是一个字符串: %s\n", v)
default:
fmt.Printf("未知的数据类型\n")
}
}
}
实现思路
- 定义切片:使用空接口
interface{}
作为切片元素类型,这样切片可以存储任何类型的数据。在上述代码中,定义了一个 data
切片,并向其中添加了一个整数和一个字符串。
- 遍历切片:通过
for... range
循环遍历切片中的每一个元素。
- 类型断言与处理:在循环内部,使用
switch... type
语句进行类型断言。它可以在运行时判断空接口实际存储的数据类型,然后根据不同类型执行相应的处理逻辑。如果遇到未知类型,则执行 default
分支的逻辑。