石家庄设计网站公司,搜索关键词站长工具,电商种类有哪些,海尔电子商务网站建设预算基本介绍 变量(实例)具有多种形态。面向对象的第三大特征#xff0c;在Go语言#xff0c;多态特征是通过接口实现的#xff08;接口能够体现多态的特征#xff09;。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。 在前面的Usb接口案例#xff0c;u…基本介绍 变量(实例)具有多种形态。面向对象的第三大特征在Go语言多态特征是通过接口实现的接口能够体现多态的特征。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。 在前面的Usb接口案例usb既可以接收手机变量又可以接收相机变量就体现了Usb接口多态特性。自动的根据上下文环境来判断usb变量到底是什么类型的变量 接口体现多态特征 1)多态参数 在前面的Usb接口案例Usb usb即可以接收手机变量又可以接收相机变量就体现了Usb接口多态 2)多态数组 演示一个案例给Usb数组中存放Phone结构体和Camera结构体变量Phone还有一个特有的方法call()请遍历Usb数组如果是Phone变量除了调用Usb接口声明的方法外还需要调用Phone特有方法call.
package mainimport fmttype Usb interface {Working()
}type Phone struct {
}type Camera struct {
}func (*Phone) Working() {fmt.Println(phone start working......)
}func (*Camera) Working() {fmt.Println(camera start working......)
}func test(usb ...Usb) {for _, v : range usb {v.Working()}
}func main() {p : new(Phone)c : new(Camera)test(p, c)
}
有时候需要去做判断去看传进来的变量具体是哪种类型可以使用什么样的方法。这个时候就需要去使用类型断言。 这个类型也不能瞎转化这个得空接口的的确确指向的是Point类型。同时注意指指向的是结构体变量类型还是结构体指针类型。
其实就是要将空接口转化为对应的类型那么就会使用到类型断言。 在类型断言的时候如果不匹配就会报错panic因此进行类型断言的时候要确保原来空接的类型指向的转换就是要断言的类型。
这样判断避免了类型断言失败导致整个程序崩溃。