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

golang学习笔记——接口和继承比较1

继承

  • Go 语言的设计之初,就不打算支持面向对象的编程特性,因此 Go 不支持面向对象的三大特性之一——继承。但是 Go 可以通过组合的思想去实现 “继承”。
  • 继承是面向对象的三大特性之一,继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
  • Go 语言里的“继承”体现如一个结构体拥有另一个结构体的的所有字段和方法,并在此基础上,定义新的字段和方法。

代码

import "fmt"type Person struct {Name stringAge  int
}func (p Person) Introduce() {fmt.Printf("大家好,我叫%s,我今年%d岁了。\n", p.Name, p.Age)
}type Student struct {PersonSchool string
}func (s Student) GoToTheClass() {fmt.Println("去上课...")
}func main() {student := Student{}student.Name = "小明"student.Age = 18student.School = "太阳系大学"// 执行 Person 类型的 Introduce 方法student.Introduce()// 执行自身的 GoToTheClass 方法student.GoToTheClass()
}

输出

大家好,我叫小明,我今年18岁了。
去上课...

接口

在这里插入图片描述
直接看代码

package main
import ("fmt"
)//Monkey结构体
type Monkey struct {Name string
}//声明接口
type BirdAble interface {Flying()
}type FishAble interface {Swimming()
}func (this *Monkey) climbing() {fmt.Println(this.Name, " 生来会爬树..")
}//LittleMonkey结构体
type LittleMonkey struct {Monkey //继承
}//让LittleMonkey实现BirdAble
func (this *LittleMonkey) Flying() {fmt.Println(this.Name, " 通过学习,会飞翔...")
}//让LittleMonkey实现FishAble
func (this *LittleMonkey) Swimming() {fmt.Println(this.Name, " 通过学习,会游泳..")
}func main() {//创建一个LittleMonkey 实例monkey := LittleMonkey{Monkey {Name : "悟空",},}monkey.climbing()monkey.Flying()monkey.Swimming()}

输出

悟空  生来会爬树..
悟空  通过学习,会飞翔...
悟空  通过学习,会游泳..

总结

当A结构体继承了B结构体,那么A结构体就自动的继承了B结构体的字段和方法,并且可以直接使用。

当A结构需要扩展功能,同时不希望去破坏继承关系,则可以去实现某个接口即可,因此我们可以认为:实现接口是对继承机制的补充。

相关文章:

golang学习笔记——接口和继承比较1

继承 Go 语言的设计之初,就不打算支持面向对象的编程特性,因此 Go 不支持面向对象的三大特性之一——继承。但是 Go 可以通过组合的思想去实现 “继承”。继承是面向对象的三大特性之一,继承是从已有的类中派生出新的类,新的类能…...

chatGPT快捷键(最新版本)

chatGPT 快捷键,可以用于获取最新的一条回复内容 ChatGPT的API接口相当贵,有了快捷键功能,我们可以使用python的selenium控件模拟点击来实现自动化功能,通过发送快捷键来获取最新的回复内容 快捷键介绍如下: windows…...

77基于matlab的蚁群优化路径算法,二维路径和三维路径优化

基于matlab的蚁群优化路径算法,二维路径和三维路径优化。输出可视化最优路径和距离迭代曲线。数据可更换自己的,程序已调通,可直接运行。 77三维和二维路径可视化 (xiaohongshu.com)...

PyTorch中并行训练的几种方式

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...

基于非链式(数组)结点结构的二叉树的层序输入创建以及遍历

点击链接返回标题->基于非链式(数组)结点结构的二叉树的层序、先序、中序、后序输入创建以及层序、先序、中序、后序输出-CSDN博客 层序可谓是最简单的二叉树遍历了。。。。 代码很浅显易懂&#xff0c;相信你能明白的&#xff01; #include<iostream> using namesp…...

云计算:开辟数字时代的无限可能

云计算是一项革命性的技术&#xff0c;为企业和个人提供了灵活、可扩展和高效的计算资源。本文将介绍云计算的概念、架构和优势&#xff0c;并探讨其在数字化时代的重要性和未来发展趋势。 引言 随着信息技术的日新月异和数字化转型的浪潮席卷全球&#xff0c;云计算作为一种颠…...

Django+Vue项目创建 跑通

参考链接&#xff1a; 【精选】DjangoVue项目构建_django vue-CSDN博客 一、背景 主要介绍如何使用后端Django 前端Vue 的技术栈快速地搭建起一套web项目的框架。 为什么使用Django和Vue? Django是Python体系下最成熟的web框架之一&#xff0c;由于Python语言的易用…...

2023年中职“网络安全“—Linux系统渗透提权②

2023年中职"网络安全"—Linux系统渗透提权② Linux操作系统渗透测试任务环境说明&#xff1a;1. 使用渗透机对服务器信息收集&#xff0c;并将服务器中SSH服务端口号作为flag提交&#xff1b;2. 使用渗透机对服务器信息收集&#xff0c;并将服务器中主机名称作为flag…...

多模态大模型训练数据集汇总介绍

RefCOCO、RefCOCO、RefCOCOg 这三个是从MS-COCO中选取图像得到的数据集&#xff0c;数据集中对所有的 phrase 都有 bbox 的标注。 RefCOCO 共有19,994幅图像&#xff0c;包含142,209个引用表达式&#xff0c;包含50,000个对象实例。RefCOCO 共有19,992幅图像&#xff0c;包含1…...

IDEA中更换java项目JDK

我们打开IDEA 打开项目 然后选择 File 下的 Project Structure 这里 我们下拉选择自己需要的JDK Sources这里 也要设置一下JDK对应版本 然后 上面这个 Project 中 也要设置一下对应jdk的版本 保持一直 然后 我们打开 File 下的 Settings 然后 找到如下图配置 如果JKD版本看…...

C++函数

转载知呼大佬06 - C函数 - 知乎 (zhihu.com) 06 - C函数 本期我们讨论的是 C 中的函数。 函数到底是什么呢&#xff0c;函数就是我们写的代码块&#xff0c;被设计用来执行特定的任务&#xff0c;以后我们学习 class 类的时候&#xff0c;这些块会被称为方法&#xff0c;但是…...

设计模式-命令模式-笔记

“行为变化”模式 在组件的构建过程中&#xff0c;组件行为的变化经常导致组件本身剧烈的变化。“行为变化”模式组件的行为和组件本身进行解耦&#xff0c;从而支持组件行为的变化&#xff0c;实现两者之间的松耦合。 经典模式&#xff1a;Command、Visitor 动机&#xff0…...

酒店品牌纷纷冲击中高端,东呈集团能否“快人一步”?

过去两年酒店行业加速洗牌&#xff0c;“强者恒强”的马太效应正持续凸显。 报告显示&#xff0c;2022年排名前10名的酒店集团分别为锦江国际、华住、首旅如家、格林、东呈集团、尚美数智、亚朵、德胧、逸柏、都市酒店。以上10家酒店集团客房规模在连锁酒店市场占有率为62.36&…...

[hive] posexplode函数

在Hive SQL中&#xff0c;posexplode是一个用于将数组&#xff08;array&#xff09;拆分为多行的函数。 它返回数组中的每个元素以及其在数组中的位置&#xff08;索引&#xff09;作为两列输出。 这是posexplode函数的语法&#xff1a; posexplode(array)其中&#xff0c;…...

C#具名参数(Named Parameters)

在 C# 中&#xff0c;具名参数&#xff08;Named Parameters&#xff09;是一种在方法调用中使用参数名称来指定参数值的技术。通常情况下&#xff0c;我们使用位置参数&#xff08;Positional Parameters&#xff09;来按照方法参数的顺序传递参数值。但是&#xff0c;使用具名…...

Vue3的组件如何通讯

一、defineProps&#xff0c;defineEmits 子组件nameChange.vue <template><div class"title">姓&#xff1a;{{ firstName }}</div><div>名&#xff1a;{{ lastName }}</div>{{ name }}<button click"clickTap">传…...

MySQL SUBSTRING_INDEX 函数用法

定义和用法 SUBSTRING_INDEX()函数在指定数量的分隔符出现之前返回字符串的子字符串。 语法 SUBSTRING_INDEX(string, delimiter, number) 参数值 参数 描述 string 必须项。原始字符串 delimiter 必须项。要搜索的分隔符 number 必须项。搜索分隔符的次数。可以是正…...

腾讯微服务平台TSF学习笔记(一)--如何使用TSF的Sidecar过滤器实现mesh应用的故障注入

Mesh应用的故障注入 故障注入前世今生Envoy设置故障注入-延迟类型设置故障注入-延迟类型并带有自定义状态码总结 故障注入前世今生 故障注入是一种系统测试方法&#xff0c;通过引入故障来找到系统的bug&#xff0c;验证系统的稳健性。istio支持延迟故障注入和异常故障注入。 …...

day30_servlet

今日内容 零、复习昨日 一、接收请求 二、处理响应 三、综合案例 零、复习昨日 画图, 请求处理的完整流程(javaweb开发流程) 零、注解改造 WebServlet注解,相当于是在web.xml中配置的servlet映射 Servlet类 package com.qf.servlet;import javax.servlet.ServletException; im…...

计算机毕业设计 基于SpringBoot的社区物资交易互助平台/系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

保姆级教程:用Python和baostock复现Fama-French三因子模型,手把手教你分析A股

用Python实战Fama-French三因子模型&#xff1a;从理论到A股分析全流程解析 在量化投资领域&#xff0c;Fama-French三因子模型犹如一盏明灯&#xff0c;为理解股票收益提供了清晰的框架。不同于传统CAPM模型的单一市场视角&#xff0c;这一诺奖级理论通过引入市值和账面市值比…...

AdamW与Muon优化器在FFN中的谱崩溃对比研究

1. 项目背景与问题定义在深度神经网络训练过程中&#xff0c;优化器的选择直接影响模型收敛速度和最终性能。AdamW和Muon作为两种主流的自适应优化算法&#xff0c;在各类神经网络结构中表现出不同的特性。本项目聚焦于它们在Feed-Forward Network&#xff08;FFN&#xff09;层…...

基于模块化设计的AI聊天机器人框架:从核心原理到生产部署

1. 项目概述&#xff1a;一个开箱即用的AI聊天机器人框架最近在GitHub上闲逛&#xff0c;发现了一个叫marcusschiesser/ai-chatbot的项目&#xff0c;点进去一看&#xff0c;好家伙&#xff0c;又是一个AI聊天机器人。这年头&#xff0c;基于大语言模型&#xff08;LLM&#xf…...

GenAI与LLM演进时间线:从信息过载到结构化认知的AI从业者指南

1. 项目概述&#xff1a;一份为AI从业者量身打造的历史年鉴如果你和我一样&#xff0c;在2022年底被ChatGPT的横空出世所震撼&#xff0c;并从此一头扎进了生成式AI和大型语言模型&#xff08;LLM&#xff09;的浪潮中&#xff0c;那么你肯定有过这样的时刻&#xff1a;面对日新…...

go语言:实现largestPrime最大素数的算法(附带源码)

一、项目背景详细介绍在数论与算法领域&#xff0c;有一个非常经典的问题&#xff1a;Largest Prime&#xff08;最大素数&#xff09;问题它的核心目标是&#xff1a;&#x1f449; 在给定范围内找到最大的素数1.1 什么是素数&#xff1f;素数&#xff08;Prime Number&#x…...

开源AI对话聚合平台LibreChat:统一管理多模型,部署与实战指南

1. 项目概述&#xff1a;一个真正开源的AI对话聚合平台如果你和我一样&#xff0c;在过去一年里被各种AI聊天机器人搞得眼花缭乱&#xff0c;一会儿用这个查资料&#xff0c;一会儿用那个写代码&#xff0c;账号密码记了一堆&#xff0c;界面换来换去效率极低&#xff0c;那你一…...

腾讯会议企业管理员 REST API 实战:用户/部门批量管理与会议合规审计

本文适用于企业级管理员开发场景&#xff0c;代码基于腾讯会议 REST API v2&#xff0c;Python 3.x 示例。 参考文档&#xff1a;腾讯会议开放平台 API 文档 【内文配图1位置】 背景 中大型企业使用腾讯会议企业版后&#xff0c;IT 管理员通常面临以下管理需求&#xff1a; 批…...

深入解析Arxo:基于Deno与TypeScript的零配置现代静态站点生成器

1. 项目概述&#xff1a;一个被低估的现代静态站点生成器如果你和我一样&#xff0c;在技术选型上有点“工具控”的倾向&#xff0c;喜欢尝试各种新奇的、声称能提升效率的框架&#xff0c;那么你很可能已经对arxohq/arxo这个名字感到陌生。它不像 Hugo、Jekyll 或 Next.js 那样…...

Flutter for OpenHarmony 跨平台开发:喝水提醒功能实战指南

Flutter for OpenHarmony 跨平台开发&#xff1a;喝水提醒功能实战指南 欢迎加入开源鸿蒙跨平台社区&#xff1a;https://openharmonycrossplatform.csdn.net一、引言 水是生命之源&#xff0c;人体约70%由水构成&#xff0c;充足的水分摄入对维持人体正常生理功能至关重要。医…...

CNN-xLSTM-Attention 回归模型:从原理到 SHAP 可解释性全解析

CNN-xLSTM-Attention 回归模型&#xff1a;从原理到 SHAP 可解释性全解析融合卷积、长短期记忆与注意力机制&#xff0c;让时间序列预测同时做到高精度与高解释性。在工业预测、故障诊断、能源负荷预测等任务中&#xff0c;我们经常需要处理结构复杂的表格型时间序列数据。今天…...