当前位置: 首页 > news >正文

Golang 面向对象编程 多态

基本介绍


变量(实例)具有多种形态。面向对象的第三大特征,在Go语言,多态特征是通过接口实现的(接口能够体现多态的特征)。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。
在前面的Usb接口案例,usb既可以接收手机变量,又可以接收相机变量,就体现了Usb接口多态特性。(自动的根据上下文环境来判断usb变量到底是什么类型的变量


 

 接口体现多态特征


1)多态参数
在前面的Usb接口案例,Usb usb即可以接收手机变量,又可以接收相机变量,就体现了Usb接口多态
2)多态数组
演示一个案例:给Usb数组中,存放Phone结构体和Camera结构体变量,Phone还有一个特有的方法call(),请遍历Usb数组,如果是Phone变量,除了调用Usb接口声明的方法外,还需要调用Phone特有方法call.

package mainimport "fmt"type 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,因此进行类型断言的时候要确保原来空接的类型指向的转换就是要断言的类型。

这样判断避免了类型断言失败导致整个程序崩溃。

http://www.lryc.cn/news/195803.html

相关文章:

  • WLAN 无线案例(华为AC控制器配置模板)
  • 精美的早安问候语,暖心祝福,开心每一天
  • 嵌入式养成计划-41----C++ auto--lambda表达式--C++中的数据类型转换--C++标准模板库(STL)--list--C++文件操作
  • 全局事件总线
  • 通讯网关软件026——利用CommGate X2ORACLE-U实现OPC UA数据转入ORACLE
  • RAII与智能指针
  • 易云维智慧工业云平台助力广西国企培育数字产业化平台,打造数字化产业生态
  • 【密码学】第三章、分组密码
  • 宁夏企业过等保选哪家测评机构好?选哪家堡垒机好?
  • Vue绑定style和class 对象写法
  • 使用vue-sign插件
  • python究竟可以用来做些什么
  • Segment Anything(论文解析)
  • @ConditionalOnProperty 用法
  • 如何选择超声波清洗机、超声波清洗机排行榜
  • 大家这么喜欢这件羽绒服的吗?眼光太好啦
  • pytorch 入门(二)
  • 2023年国赛-大数据应用开发(师生同赛)_赛项规程样题解析
  • MNE系列教程1——MNE的安装与基本绘图
  • 黑马JVM总结(三十六)
  • 【React】01-React的入门
  • 【C语言进阶】自定义类型:结构体,枚举,联合
  • Sklearn 聚类算法的性能评估
  • 9月最新外贸进出口数据出来了,外贸整体向好
  • SSL证书有效期越来越短是什么原因?
  • 【前段基础入门之】=>CSS3新特性 3D 变换
  • form表单的三种封装方法(Vue+ElementUI)
  • 云原生周刊:CNCF 宣布 Cilium 毕业 | 2023.10.16
  • 岩土工程监测利器:多通道振弦数据记录仪应用隧道监测
  • hive排序