Go语言中,空接口可以接收任何类型的数据,可以使用类型断言,来判断数据的类型。并且可以通过if或switch来判断空接口数组内部数据的类型
格式:
value,ok := element.(T)
测试代码:
package main
import "fmt"
func SingleInterfaceDemo() {
var i interface{}
i = 10
value, ok := i.(int)
if ok {
fmt.Println("整形数据", value)
} else {
fmt.Println("不是整形")
}
}
func demo() {
fmt.Println("函数")
}
func SliceInterfaceByIfDemo() {
var i []interface{}
a := [3]int{1, 3, 2}
i = append(i, 1, 3.14, "2", a, demo)
for _, v := range i {
if data, ok := v.(int); ok {
fmt.Println("整形数据", data)
} else if data, ok := v.(float64); ok {
fmt.Println("浮点型数据", data)
} else if data, ok := v.(string); ok {
fmt.Println("字符串型数据", data)
} else if data, ok := v.(func()); ok {
data()
}
}
}
func SliceInterfaceBySwitchDemo() {
var i []interface{}
a := [3]int{1, 3, 2}
i = append(i, 1, 3.14, "2", a, demo)
for _, data := range i {
switch value := data.(type) {
case int:
fmt.Println("整形数据", value)
case float64:
fmt.Println("浮点型数据", value)
case string:
fmt.Println("字符串型数据", value)
case func():
fmt.Println("函数")
}
}
}
func main() {
SingleInterfaceDemo()
fmt.Println()
SliceInterfaceByIfDemo()
fmt.Println()
SliceInterfaceBySwitchDemo()
}