golang 实现继承方式

经常使用java或c++同学应该比较了解纯面向对象,继承、接口、封装等特性,在go中并没有特别显示的表达出来,但是go隐含是支持的,只是支持的方式不一致,可以说go的方式更加灵活,go语言精髓是组合机制,接口也是一个方法类型,相互组合就会出现很多种,没有java那种强制绑定的机制,这种挺好的,作为java开发者,接触go,确实给我耳目一新,给大大赞,我这边我自己的理解通过go实现java中的继承,来看看效果。

// 定义动物接口方法,描述动物行为,这个接口可以先不管它,我用来测接口定义行为的
type Animaler interface {//吃饭Eat(string)
}// 定义动物父级结构体,主要描述动物相关属性
type AnimalParent struct {Name stringAge  int
}// 默认动物都会跑,这个方法类似默认方法,可以不覆盖
func (a AnimalParent) run() {fmt.Println("这是父级动物级别,animal=", a.Name)
}type AbstractAnimal struct {//颜色Color string//足Foot int//父类AnimalParent
}func (a AbstractAnimal) Action(animaler Animaler) {animaler.Eat(a.Name + "在吃饭")}/*func (a AbstractAnimal) run() {fmt.Println("这是抽象类动物级别,animal=", a.Name)
}*//*
*定义猫
*/
type Cat struct {AbstractAnimalFood string
}func (c Cat) Eat(str string) {fmt.Println(c.Name, "吃的", c.Food, str)
}/*
func (c Cat) run() {fmt.Println("这是猫级别,name=", c.Name)}*/func main() {cat := Cat{AbstractAnimal: AbstractAnimal{Color: "黄色",Foot:  4,AnimalParent: AnimalParent{Name: "猫",},},Food: "鱼,老鼠",}cat.run()cat.Action(cat)}

把抽象类方法去掉,看效果:

打印的是父级的run

抽象类run打开:

这是抽象类的run方法

用cat 重写run方法

看看效果是cat级别的run方法,完全是可以实现java的多态情况,不过比java更加灵活,强大;还有就是go的接口,是一个类型,只有方法,可以和结构体进行灵活组合,达到牛逼的扩展性,比较java强,还有空接口概念,可以理解为java的object类,任何类型都实现了空接口,go值得学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/34667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淘宝扭蛋机小程序:现在是否是最佳开发时机?

随着科技的飞速发展和移动互联网的普及,小程序作为一种新兴的互联网应用形态,已经深入到人们的日常生活中。淘宝扭蛋机小程序,作为结合了娱乐与电商的创新模式,近年来备受关注。那么,现在是否是开发淘宝扭蛋机小程序的…

为什么 Swift 没有原生的 subArray 方法?

为什么 Swift 没有原生的 subArray 方法? Swift 是一门设计精良的编程语言,以其灵活性和高性能著称。在 Swift 中截取数组的子数组是一个常见的操作,但你可能会发现 Swift 标准库中并没有直接提供一个 subArray 方法。这是为什么呢&#xff…

洗地机哪个牌子最好用?测评员总结4款高配置洗地机推荐

洗地机作为现代家居清洁的得力助手,它不仅能让我们在日常清扫中保持高效率和高便捷性,特别适合快节奏生活的都市家庭。面对市场上众多的洗地机品牌与型号,消费者往往面临选择难题,对于洗地机的综合考量需要太多时间,而…

Spring Boot整合Druid:轻松实现SQL监控和数据库密码加密

文章目录 1 引言1.1 简介1.2 Druid的功能1.3 竞品对比 2 准备工作2.1 项目环境 3 集成Druid3.1 添加依赖3.2 配置Druid3.3 编写测试类测试3.4 访问控制台3.5 测试SQL监控3.6 数据库密码加密3.6.1 执行命令加密数据库密码3.6.2 配置参数3.6.3 测试 4 总结 1 引言 1.1 简介 Dru…

​Python20 Numpy基础

NumPy(Numerical Python)是一个开源的Python库,广泛用于科学计算。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具和函数。NumPy是数据分析、机器学习、工程和科学研究中不可或缺的工具之一,因为它提供…

使用Hugging Face获取BERT预训练模型

【图书推荐】《从零开始大模型开发与微调:基于PyTorch与ChatGLM》_《从零开始大模型开发与微调:基于pytorch与chatglm》-CSDN博客 BERT是一个预训练模型,其基本架构和存档都有相应的服务公司提供下载服务,而Hugging Face是一家目前专门免费提…

推荐一款好用的编辑工具——onlyoffice桌面编辑器8.1

读者大大们好呀!!!☀️☀️☀️ 🔥 欢迎来到我的博客 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️寻至善的主页 文章目录 🔥前言🚀版本更新概览🚗文档编辑PDF编辑器…

搭建盲盒小程序的必要性

随着移动互联网的飞速发展,小程序作为一种新型的应用形态,已经深入人们的生活。而盲盒,作为一种独特的销售方式,因其神秘感和趣味性而备受年轻消费者的喜爱。当盲盒遇上小程序,便产生了一种全新的商业模式,…

Qt项目天气预报(5) - 根据JSON刷新天气信息+城市匹配

刷新当天天气 我们使用如下api接入,当然需要自己去 易客云天气API免费天气API接口|天气预报接口|全球天气API接口|气象预警|空气质量 (tianqiapi.com)注册后生成自己的对应id才可以使用 //专业天气v61 http://v1.yiketianqi.com/api?unescape1&versionv61&…

STM32学习-HAL库 串口通信

学完标准库之后,本来想学习freertos的,但是看了很多教程都是移植的HAL库程序,这里再学习一些HAL库的内容,有了基础这里直接学习主要的外设。 HAL库对于串口主要有两个结构体UART_InitTypeDef和UART_HandleTypeDef,前者…

白帽子的海外第一单,750刀

国际惯例,给兄弟们看图 这是我们师傅挖国外SRC的部分赏金截图 就问你!挖国外漏洞赚美金香不香! 现在国内SRC越来越卷了,越来越多的白帽子开始挖海外漏洞赚美金。海外SRC真的比国内赏金高很多,不说高危漏洞&#xff0…

MoneyPrinterPlus:AI自动短视频生成工具-腾讯云配置详解

MoneyPrinterPlus可以使用大模型自动生成短视频,其中的语音合成和语音识别部分需要借助于一些第三发云厂商的语音服务。 很多小伙伴可能不知道应该如何配置,这里给大家提供一个详细的腾讯云语音服务的配置教程。 项目已开源,代码地址&#…

计算几何系列——XCPC中计算几何一些题型杂谈(上)

本系列文章力求以简洁易懂的文字介绍计算几何中的基本概念,使读者快速入门,故不追求难度和深度,仅起到抛砖引玉的作用。 在XCPC中有一种题叫计算几何,这类题在大多数时候都作为一类金牌题甚至防AK题的难度出现,但是在…

Kotlin设计模式:代理模式详解

Kotlin设计模式:代理模式详解 在软件开发中,设计模式是解决常见问题的一种优雅方法。本文将介绍Kotlin中的代理模式(Proxy Pattern),其应用场景,以及如何通过实例代码实现这一模式。 代理模式的目的 代理…

DEtection TRansformer (DETR)与YOLO在目标检测方面的比较

1. 概述 计算机视觉中的目标检测是一个复杂而有趣的领域,它涉及到让计算机能够识别图像中的物体,并确定它们的位置。下面是DETR和YOLO这两种目标检测方法简单比较: 1.1 YOLO YOLO是一种非常流行的目标检测算法,它的核心思想是将…

一种502 bad gateway nginx/1.18.0的解决办法

背景:上线的服务突然挂掉了 step1,去后端日志查看,发现并无异常,就是请求无法被接收 step2,查看了nginx的错误日志,发现该文件为空 step3,查看了niginx的运行日志,发现了以下问题 [error] 38#…

Python为JSON解析和生成功能库之rapidjson使用详解

概要 在现代应用程序开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于Web开发、数据传输和配置文件等场景。Python自带的json模块已经非常强大,但在处理大规模数据时,其性能可能无法满足需求。为了提高JSON处理效率,Python的rapidjs…

猫头虎分享:K8S优雅关机怎么实现?配置一下server.shutdown.graceful?

🚀 猫头虎分享:K8S优雅关机怎么实现?配置一下server.shutdown.graceful? 摘要 在云原生时代,Kubernetes(K8S)已经成为管理容器化应用的标准。然而,当我们需要优雅地关闭K8S中的Pod时&#xf…

yolov5模型pt转engine

目录 1. 环境准备1.1 安装tensorrt1.1.1 pip安装1.1.2 压缩包安装 2. pt转engine3. 转换过程中遇到的问题 1. 环境准备 1.1 安装tensorrt 1.1.1 pip安装 pip install tensorrt 1.1.2 压缩包安装 很可能会失败,最保险的方法是下载tensorRT的压缩包,比…

Pyecharts入门

数据可视化 Pyecharts简介 Apache ECharts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时&#…