1.7.2 接口的查询
接口查询在程序运行时进行,查询是否成功,也要在运行时期才能确定
他不香接口的赋值,编译器只需要通过动态类型检查即可判断赋值是否可行
在Go语言中,可以询问他指向的对象是否是某个类型
var filewriter Writer = ... if filew, ok := filewriter.(*File); ok { // ... }上面if语句判断filewriter接口指向的对象实例是否为*File类型,如果是,则执行特定代码
这次,if语句会判断接口I所指向的对象是否是[]int类型,如果是,则输出切片中的元素
slice := make([]int, 0) slice = append(slice, 1, 6, 8) var I interface{} = slice if res, ok := I.([]int); ok { fmt.Println(res) //[1 6 8] fmt.Println(ok) }通过使用"接口类型.(type)"形式,加上switch...case语句来判断接口存储的类型
func Len(array interface{}) int { var length int // 数组的长度 if array == nil { length = 0 } switch array.(type) { case []int: length = len(array.([]int)) case []string: length = len(array.([]string)) case []float32: length = len(array.([]float32)) default: length = 0 } fmt.Println(length) return length }
Last updated