package main
import "fmt"
/**
01
空接口不包含任何方法,正因为如此所有的类型都实现了空接口
因此空接口可以存储任意类型的数值
var v1 interface{}=1
var v2 interface{}="abc"
var v3 interface{}=&v2
**/
type Student struct {
name string
age int
}
func main() {
var v4 interface{} = struct{ x int }{1}
fmt.Println("v4=", v4)
//02空接口的应用 func Printlf(fmt string, args...interface{})
// func Println(args...interface{})
//03判断空接口参数
i := make([]interface{}, 3)
i[0] = 1
i[1] = "hi"
i[2] = Student{"huahu", 33}
//类型查询,类型断言;确定类型后才能给其他变量赋值,不能强转!!!
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],内容为%v\n", index, value)
}
}
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],内容为%v\n", index, value)
}
}
}
4.9 go空接口及断言
猜你喜欢
转载自blog.csdn.net/h4241778/article/details/105318270
今日推荐
周排行