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,因此进行类型断言的时候要确保原来空接的类型指向的转换就是要断言的类型。
这样判断避免了类型断言失败导致整个程序崩溃。
相关文章:
Golang 面向对象编程 多态
基本介绍 变量(实例)具有多种形态。面向对象的第三大特征,在Go语言,多态特征是通过接口实现的(接口能够体现多态的特征)。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。 在前面的Usb接口案例,u…...
WLAN 无线案例(华为AC控制器配置模板)
实验说明: 无线用户VLAN 30 192.168.30.0/24 AP和AC用VLAN 20 192.168.20.0/24 有线网段 VLAN 10 192.168.10.0/24 步骤一:全网互通 sw1: sysname sw1 # vlan batch 10 20 30 # dhcp enable # ip pool 20 gateway-list 192.168.20.1…...
精美的早安问候语,暖心祝福,开心每一天
1、 美好的祝福,成了清晨的主题。相互问候,是一天的开始。让我们伴着不老的岁月,永远开心快乐。早晨好! 2、 心宽似海,百福皆来,世事看淡,内心安然。随缘即福,随遇而安࿰…...
嵌入式养成计划-41----C++ auto--lambda表达式--C++中的数据类型转换--C++标准模板库(STL)--list--C++文件操作
九十九、auto 99.1 概念 C11引入了自动类型推导,和Python不一样,C中的自动类型推导,需要auto关键字来引导比如 :auto a 1.2; 会被编译器自动识别为 a 为 double 类型 99.2 作用 auto修饰变量,可以自动推导变量的数…...
全局事件总线
全局事件总线 功能:可以解决所有组件之间通信传数据的问题原理:通过一个共享对象,将所有组件全部绑定到对象上,即可通过这个对象实现组件与组件之间的传递数据,而这个共享对象叫做全局事件总线。 如何分清楚谁是发送方…...
通讯网关软件026——利用CommGate X2ORACLE-U实现OPC UA数据转入ORACLE
本文介绍利用CommGate X2ORACLE-U实将OPC UA数据源中的数据转入到ORACLE数据库。CommGate X2ORACLE-U是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,将OPC UA数据源的数据写入到ORACLE数据…...
RAII与智能指针
RAII与智能指针 1.RAII1.1RAII理解1.2RAII的原理1.2.1简单的例子说明局部对象的自动销毁的特性 1.2.2 RAII 过程 2.智能指针2.1 auto_ptr2.1.1auto_ptr的使用构造函数与析构函数拷贝构造函数与赋值提领操作auto ptr其它函数 2.1.2autoptr使用的注意事项 2.2 unique_ptr2.2.1uni…...
易云维智慧工业云平台助力广西国企培育数字产业化平台,打造数字化产业生态
2022年6月6日,广西壮族自治区人民政府国有资产监督管理委员会出台了《国有企业数字化转型工作实施意见》,明确了总体要求、主要目标、重点推进国有企业数字化转型的任务和保障措施。 《意见》预计,到2025年底,广西基本实现自治区级…...
【密码学】第三章、分组密码
DES、IDEA、AES、SM4 1、分组密码定义(按照五个组成部分答) 密钥空间:属于对称加密算法kekd明密文空间:将明文划分为m比特的组,每一块依次进行加密加解密算法:由key决定一个明文到密文的可逆映射 2、发展…...
宁夏企业过等保选哪家测评机构好?选哪家堡垒机好?
最近不少宁夏小伙伴在问,宁夏企业过等保选哪家测评机构好?选哪家堡垒机好?今天我们小编就给大家来简单说说哈! 宁夏企业过等保选哪家测评机构好? 目前宁夏正规具有资质的等保测评机构只有3家,分别为中电信…...
Vue绑定style和class 对象写法
适用于:要绑定多个样式,个数确定,名字也确定,但不确定用不用。 绑定 class 样式【对象写法】: .box{width: 100px;height: 100px; } .aqua{background-color: aqua; } .border{border: 20px solid red; } .radius{bor…...
使用vue-sign插件
Vue-sign是一个基于Vue.js和Canvas的签名组件,可以轻松地在Vue应用程序中实现签名板或手写签名功能。使用它可以使用户在前端网页上直接进行手写签名,实现更好的用户交互和业务需求。 使用Vue-sign可以提供以下好处: 通过Vue.js框架进行开发…...
python究竟可以用来做些什么
这里就不撰述python的一些像什么“高级语言”之类的比较常规的介绍了,还是老样子,说说一些比较常用的东西吧。 python是什么 python,一款可编程的开源软件,很多第三方库、框架也是开源的,比如强大的anaconda、sklear…...
Segment Anything(论文解析)
Segment Anything 摘要1.介绍2 SAM任务SAM模型 摘要 我们介绍了“Segment Anything” (SA) 项目:这是一个新的任务、模型和数据集对于图像分割。使用我们高效的模型进行数据收集,我们构建了迄今为止最大的分割数据集(远远超过其他数据集&…...
@ConditionalOnProperty 用法
文章目录 前言一、使用场景二、使用步骤1.错误示例2.ConditionalOnProperty的解决方案 总结 前言 ConditionalOnProperty 是Spring Boot中的条件注解,它的核心功能是通过属性名以及属性值来实现的,常被用于判断某个属性是否存在,然后决定某个…...
如何选择超声波清洗机、超声波清洗机排行榜
眼镜的日常清洗生活中很多人都会把它给忘记!长时间下来眼镜支架就会变成黄色的,非常的难洗掉,从而又浪费了一个眼镜。一副好的眼镜也不便宜的,把换眼镜的钱省下来入一款超声波清洗机,可以大大的减少金钱的支持…...
大家这么喜欢这件羽绒服的吗?眼光太好啦
简单干净散发着朝气,温暖的气息由内而外 90白鸭绒,高密度充绒量和蓬松度 三防工艺,立领连帽设计 下摆抽绳,帽子上的魔术贴设计 无一不将保暖落实在实处...
pytorch 入门(二)
本文为🔗小白入门Pytorch内部限免文章 🍨 本文为🔗小白入门Pytorch中的学习记录博客🍦 参考文章:【小白入门Pytorch】教案二🍖 原作者:K同学啊 目录 一、神经网络的组成部分1. 神经元2. 神经网络…...
2023年国赛-大数据应用开发(师生同赛)_赛项规程样题解析
2023年国赛-大数据应用开发(师生同赛)_赛项规程样题解析-任务B:离线数据处理_子任务一:数据抽取2023年国赛-大数据应用开发(师生同赛)_赛项规程样题解析-任务B:离线数据处理_子任务二:数据清洗2023年国赛-大数据应用开发(师生同赛…...
MNE系列教程1——MNE的安装与基本绘图
一、MNE包简介 MNE-Python是一个强大的Python库,专门用于脑电图(EEG)和磁共振成像(MRI)数据的分析和可视化。它提供了广泛的工具,使研究人员能够高效地处理神经科学数据。 MNE-Python支持许多数据格式,包括标准的EEG和MEG文件格式,以及不同类型的MRI数据。它可以用于…...
告别VSCode C++插件卡顿!ROS开发用clangd实现丝滑补全的保姆级配置
告别VSCode C插件卡顿!ROS开发用clangd实现丝滑补全的保姆级配置 在ROS开发中,代码补全的流畅度直接影响开发效率。许多开发者习惯使用VSCode进行ROS项目开发,但原生的C/C插件在大型项目中的表现往往不尽如人意——补全速度慢、误报错误、占用…...
通过TaotokenCLI工具一键配置团队统一的大模型开发环境
通过TaotokenCLI工具一键配置团队统一的大模型开发环境 1. 安装Taotoken CLI工具 Taotoken CLI提供两种安装方式,适合不同使用场景。对于需要频繁调用CLI的团队管理员,推荐全局安装: npm install -g taotoken/taotoken若仅需临时使用或避免…...
维普 AIGC 率太高不用愁!这几款降重工具一次解决查重率和 AI 痕迹两个难题
毕业季论文查重、AIGC 检测双重压力拉满!不少同学熬大夜改稿,维普查重率仍飘红,AIGC 疑似率更是居高不下,反复修改却越改越乱,甚至影响论文核心逻辑。其实不用死磕手动改写,2026 年多款双效降重神器已实现 …...
IT资产管理系统是什么?其主要的数字化特征与智能监控功能有哪些?
IT资产管理系统的功能设计与实现机制分析 IT资产管理系统的设计基础在于其对数字化特性和智能监控功能的全面整合。该系统通过引入自动化识别技术,能够有效地追踪和管理每一项资产。每一台设备都配备有独特标识符,结合传感器技术实时采集状态信息。这种信…...
扩散模型在多模态触觉图像生成中的应用与优化
1. MultiDiffSense:基于扩散模型的多模态触觉图像生成技术解析在机器人感知领域,触觉-视觉多模态数据对齐一直是提升交互能力的关键挑战。传统方法需要依赖昂贵的硬件设备和耗时的数据采集流程,而单模态生成模型又难以满足跨模态学习的需求。…...
NPS vs FRP深度对比:2024年选哪个做内网穿透?从协议、性能到Web管理界面的真实体验
NPS与FRP终极对决:2024年内网穿透工具选型指南 当你需要在咖啡厅调试办公室的NAS,或是凌晨三点紧急修复家中实验室的服务器时,内网穿透工具就是你的数字救命稻草。2024年的技术战场上,NPS和FRP这两个开源战士依然在争夺着开发者的…...
从“恐怖直立猿扳手指数数”到现代加密:ORAM如何保护你的云上数据访问隐私?
从“恐怖直立猿扳手指数数”到现代加密:ORAM如何保护你的云上数据访问隐私? 想象一下,你正在使用云存储服务备份公司的财务数据。虽然文件本身已加密,但云服务商仍能观察到:每周五下午3点,你的系统总会连续…...
【卷卷观察】Agent Skills 为什么突然火了?我花了一晚上研究,结论有点反直觉
结论先甩:Agent Skills 不是什么新东西,但它解决了一个很实在的问题——怎么让 AI 不要找借口,真正把活干完。我在用 AI 写代码的时候,最烦的不是 AI 写得慢,是 AI 写完之后跟你说"测试我稍后加上"。然后就没…...
基于gym-mtsim的强化学习量化交易模拟环境构建与实战
1. 项目概述:一个为量化交易策略研究量身定制的模拟器如果你正在尝试用强化学习(Reinforcement Learning, RL)来攻克量化交易这个硬骨头,那你一定体会过那种“巧妇难为无米之炊”的尴尬。市面上的回测框架不少,但大多是…...
Remult:基于TypeScript的全栈类型安全开发框架实战指南
1. 项目概述:从“全栈噩梦”到“类型安全桥梁”如果你和我一样,在前后端分离架构里摸爬滚打了几年,肯定对下面这个场景深恶痛绝:前端写好了界面,信心满满地调用一个/api/users接口,结果后端返回的数据结构和…...
