类型断言
判断变量的数据类型
语法:
1、值.(数据类型),返回是否是指定的值的本身和数据类型
2、值.(type),返回的是指的数据类型
if实现:
type Student struct {
name string
age int
}
func main(){
i := make([]interface{},3) //定义一个长度为3的空接口数组
i[0] = 1
i[1] = "go"
i[2] = Student{"loria",25}
//类型查询,类型断言
for index, data := range i{
//第一个返回的是值,第二个返回的是判断内容的真假
if value, ok := data.(int); ok == true {
fmt.Printf("x[%d] 类型为int,内容为%d\n",index,value)
}else if value, ok := data.(string); ok == true {
fmt.Printf("x[%d] 类型为string,内容为%s\n",index,value)
}else if value, ok := data.(Student); ok == true {
fmt.Printf("x[%d] 类型为Student,内容为name=%s,age=%d\n",index,value.name,value.age)
}
}
}
运行结果:
x[0] 类型为int,内容为1
x[1] 类型为string,内容为go
x[2] 类型为Student,内容为name=loria,age=25
switch实现:
for index, data := range i{
switch value := data.(type) {
case int:
fmt.Printf("x[%d] 类型为int,内容为%d\n",index,value)
case string:
fmt.Printf("x[%d] 类型为string,内容为%s\n",index,value)
case Student:
fmt.Printf("x[%d] 类型为Student,内容为name=%s,age=%d\n",index,value.name,value.age)
}
}
运行结果:
x[0] 类型为int,内容为1
x[1] 类型为string,内容为go
x[2] 类型为Student,内容为name=loria,age=25