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

Go学习第五天

Golang中面向对象类的表示与封装

请添加图片描述

package mainimport "fmt"// 如果类名首字母大写,表示其他包也能够访问
type Hero struct {// 如果类的属性首字母大写,表示该属性是对外能够访问的,否则的话只能够类的内部访问Name  stringAd    intLevel int
}
/*
func (this Hero) GetName() {fmt.Println("Name = ", this.Name)
}func (this Hero) SetName(newName string) {// this 是调用该方法的对象的一个副本(拷贝)this.Name = newName
}func (this Hero) Show() {fmt.Println("Name = ", this.Name)fmt.Println("Ad = ", this.Ad)fmt.Println("Level = ", this.Level)
}*/func (this *Hero) GetName() {fmt.Println("Name = ", this.Name)
}func (this *Hero) SetName(newName string) {// 此时,this就不是副本而是一个指针this.Name = newName
}func (this *Hero) Show() {fmt.Println("Name = ", this.Name)fmt.Println("Ad = ", this.Ad)fmt.Println("Level = ", this.Level)
}func main() {hero := Hero{Name:  "大将军",Ad:    111,Level: 10,}hero.Show()fmt.Println("========================")hero.SetName("小将军")hero.Show()}

Golang中面相对象继承

请添加图片描述

package mainimport "fmt"// 定义父类
type Human struct {name stringsex  string
}func (this *Human) Eat() {fmt.Println("Human.Eat()...")
}func (this *Human) Walk() {fmt.Println("Human.Walk()...")
}
// ============================type SuperMan struct {Human // SuerMan类型继承Human类方法level int
}// 重定义父类的方法Eat()
func (this *SuperMan) Eat() {fmt.Println("SuperMan.Eat()...")
}func (this *SuperMan) Fly() {fmt.Println("SuperMan.Fly()...")
}func (this *SuperMan) PrintMan() {fmt.Println("name = ", this.name)fmt.Println("sex = ", this.sex)fmt.Println("level = ", this.level)
}func main() {h := Human{"张三", "男"}h.Eat()h.Walk()fmt.Println("=====================")//s := SuperMan{Human{"李四","女",},11,}var s SuperMans.name = "李四"s.sex = "女"s.level = 11s.Walk() // 父类的方法s.Eat()  // 子类的方法s.Fly()  // 子类的方法fmt.Println("=====================")s.PrintMan()}

Golang中面向对象多态的实现与基本要素

请添加图片描述

package mainimport "fmt"// 本质是一个指针
type AnimalIF interface {Sleep()           // 让动物睡觉GetColor() string // 获取动物的颜色GetType() string  // 获取动物的类型
}// ===============================
// 具体的类
type Cat struct {color string
}
func (this *Cat) Sleep() {fmt.Println("Cat is Sleep")
}
func (this *Cat) GetColor() string {return this.color
}
func (this *Cat) GetType() string {return "Cat"
}// ===============================
// 具体的类
type Dog struct {color string
}
func (this *Dog) Sleep() {fmt.Println("Dog is Sleep")
}
func (this *Dog) GetColor() string {return this.color
}
func (this *Dog) GetType() string {return "Dog"
}// ===============================func showAnimal(animal AnimalIF)  {animal.Sleep()fmt.Println("color = ", animal.GetColor())fmt.Println("type = ", animal.GetType())
}func main() {//var animal AnimalIF // 接口的数据类型,父类指针////animal = &Cat{"Green"}//animal.Sleep() // 调用的就是Cat的Sleep()方法////animal = &Dog{"Yellow"}//animal.Sleep() // 调用的就是Dog的Sleep()方法cat := Cat{"Green"}showAnimal(&cat)fmt.Println("-----")dog := Dog{"Yellow"}showAnimal(&dog)fmt.Println("-----")
}

相关文章:

Go学习第五天

Golang中面向对象类的表示与封装 package mainimport "fmt"// 如果类名首字母大写,表示其他包也能够访问 type Hero struct {// 如果类的属性首字母大写,表示该属性是对外能够访问的,否则的话只能够类的内部访问Name stringAd …...

在vue项目中封装WebSockets请求

在Vue项目中封装WebSocket请求包括以下步骤: 1. 安装WebSocket库:首先,导入WebSocket库,例如vue-native-websocket或socket.io-client。根据项目需求选择适当的库,并根据官方文档进行安装和配置。 2. 创建WebSocket服务…...

Linux进程(二)

文章目录 进程(二)Linux的进程状态R (running)运行态S (sleeping)阻塞状态D (disk sleep)深度睡眠T(stopped)状态X(dead)状态Z&#x…...

使用pg_prewarm缓存PostgreSQL数据库表

pg_prewarm pg_prewarm 直接利用系统缓存的代码,对操作系统发出异步prefetch请求,在应用中,尤其在OLAP的情况下,对于大表的分析等等是非常耗费查询的时间的,而即使我们使用select table的方式,这张表也并不可能将所有…...

LeetCode 28题:找出字符串中第一个匹配项的下标

题目 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystac…...

flink+kafka+doris+springboot集成例子

目录 一、例子说明 1.1、概述 1.1、所需环境 1.2、执行流程 二、部署环境 2.1、中间件部署 2.1.1部署kakfa 2.1.1.1 上传解压kafka安装包 2.1.1.2 修改zookeeper.properties 2.1.1.3 修改server.properties 2.1.1.3 启动kafka 2.1.2、部署flink 2.1.2.1 上传解压f…...

ARM裸机-14(S5PV210的时钟系统)

1、时钟系统 1.1、什么是时钟 时钟是同步工作系统的同步节拍 1.2、SoC为什么需要时钟 Soc内部有很多器件,例如CPU、串口、DRAM控制制器、GPIO等内部外设,这些东西要彼此协同工作,需要一个同步的时钟系统来指挥。这个就是我们SoC的时钟系统。…...

Milvus Cloud凭借AI原生,可视化优势荣登全球向量数据库性能排行榜VectorDBBench.com 榜首

在当今的大数据时代,随着人工智能技术的快速发展,向量数据库作为处理大规模数据的关键工具,其性能和效率越来越受到关注。最近,全球向量数据库性能排行榜 VectorDBBench.com 公布了一份最新的评估报告,引人瞩目的是,成立不到一年的新兴公司 Milvus Cloud 凭借其 AI 原生和…...

测试岗?从功能测试进阶自动化测试开发,测试之路不迷茫...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 测试新人在想什么…...

算法与数据结构(五)--树【1】树与二叉树是什么

一.树的定义 树是一个具有层次结构的集合,是由一个有限集和集合上定义的一种层次结构关系构成的。不同于线性表,树并不是线性的,而是有分支的。 树(Tree)是n(n>0)个结点的有限集。 若n0&…...

打开的idea项目maven不生效

方法一:CtrlshiftA(或者help---->find action), 输入maven, 点击add maven projects,选择本项目中的pom.xml配置文件,等待加载........ 方法二:view->tools windows->mave…...

kvm+qemu+libvirt管理虚机

virt-manager 图形化创建虚拟机 #virt-manager纳管远程kvm虚拟机 # 可以指定kvm虚机的ssh端口和virt-manager所在主机的私钥 virt-manager -c qemussh://root10.197.115.17:5555/system?keyfileid_rsa --no-fork # 如果你生成的ssh-key 的名称是 test-key,在/home/ssh-key/ 目…...

电气防火限流式保护器在汽车充电桩使用上的作用

【摘要】 随着电动汽车行业的不断发展,电动汽车充电设施的使用会变得越来越频繁和广泛。根据中汽协数据显示,2022年上半年,我国新能源汽车产销分别完成266.1万辆和260万辆,同比均增长1.2倍,市场渗透率达21.6%。因此,电动汽车的安全…...

VBA技术资料MF38:VBA_在Excel中隐藏公式

【分享成果,随喜正能量】佛祖也无能为力的四件事:第一,因果不可改,自因自果,别人是代替不了的;第二,智慧不可赐,任何人要开智慧,离不开自身的磨练;第三&#…...

Gson:解析JSON为复杂对象:TypeToken

需求 通过Gson&#xff0c;将JSON字符串&#xff0c;解析为复杂类型。 比如&#xff0c;解析成如下类型&#xff1a; Map<String, List<Bean>> 依赖&#xff08;Gson&#xff09; <dependency><groupId>com.google.code.gson</groupId><art…...

伪彩色处理及算法

伪色彩(false color)是指将真实世界的中无法被肉眼观察到的色彩通过计算机或其他技术转换为可见光,从而使人们能够看到这些原本无法看到的色彩。这种技术被广泛应用于军事、医学、科研等领域。 在医学领域,伪色彩技术被用于医学影像诊断。例如,通过将不同灰度的图像映射到…...

Gradle-02:问题Plugin with id ‘maven‘ not found

1. 背景 在一次使用 Gradle 构建自己项目&#xff0c;完事&#xff0c;需要上传到本地 Maven 仓库&#xff0c;因为事先并不清楚 apply plugin: maven 插件已经被 Gradle 移除&#xff0c;找了一圈&#xff0c;才找到解决方案。 2. 原因 apply plugin: maven def localRepo f…...

jupyter lab环境配置

1.jupyterlab 使用虚拟环境 conda install ipykernelpython -m ipykernel install --user --name tf --display-name "tf" #例&#xff1a;环境名称tf2. jupyter lab kernel管理 show kernel list jupyter kernelspec listremove kernel jupyter kernelspec re…...

Unity Sort Group(排序组)

** Unity 中的Sort Group组组件允许让Sprite Renderer(精灵渲染器)重新决定渲染顺序. ** 作为组件存在 组件内容&#xff1a; Unity 使用Sort Group 组件的Sort layer 和Order in layer的值来确定排序组在渲染队列内相对与场景内其他排序组和游戏对象的优先级。 属性功能So…...

基于总线加锁和缓存锁(CPU实现原子操作的两种方式)

总线锁 总线锁就是使用处理器提供的一个LOCK#信号&#xff0c;当一个处理器在总线上输出此信号时&#xff0c;其他处理器的请求将被阻塞住&#xff0c;那么该处理器可以独占共享内存。 CPU和内存之间的通信被锁&#xff01;&#xff01; 如果多个处理器同时对共享变量进行读写…...

Linux GPIO框架深度解析:从用户空间到内核驱动的完整路径

1. 项目概述&#xff1a;为什么要在Linux下研究GPIO&#xff1f;搞嵌入式开发的朋友&#xff0c;对GPIO&#xff08;通用输入输出&#xff09;肯定不陌生。它就像芯片的“手脚”&#xff0c;负责最简单的电平控制和信号读取。在单片机时代&#xff0c;我们通常直接操作寄存器&a…...

2026最新论文降AI全攻略:亲测5大高质量工具,掌握免费Prompt指令顺利交稿

为了找到真正靠谱的解决方案&#xff0c;我过去测试了市面上大部分号称能降低ai率的方法。从一分钱不花的模型指令&#xff0c;到各种付费的专业降ai率工具&#xff0c;用手头的文本做了几十次实操对比。说心里话&#xff0c;里面套路确实不少&#xff0c;有些方法用完后语句颠…...

湿敏电阻HR202/CM-R的两种驱动方案详解:IO充放电法 vs. 交流方波AD采样

湿敏电阻HR202/CM-R的两种驱动方案深度解析&#xff1a;从原理到实战选择 在环境监测和智能家居领域&#xff0c;湿敏电阻作为成本效益突出的湿度传感方案&#xff0c;其驱动电路的设计直接影响测量精度和系统稳定性。HR202和CM-R作为市面上常见的湿敏电阻型号&#xff0c;工程…...

米尔RK3562开发板深度评测:工业边缘AI网关的性价比之选

1. 项目概述&#xff1a;为什么关注米尔RK3562开发板&#xff1f;最近在给一个工业边缘计算项目选型&#xff0c;核心需求是在一个环境相对严苛的车间里&#xff0c;部署一个集成了视觉识别、多路传感器数据采集和本地轻量级推理的网关设备。性能不能太弱&#xff0c;否则处理不…...

UE5动画进阶:用Control Rig的Aim节点,5分钟搞定角色头部平滑跟随任意Actor

UE5动画进阶&#xff1a;Control Rig的Aim节点实现角色头部动态跟随 在游戏开发中&#xff0c;角色与环境的动态交互是提升沉浸感的关键要素之一。想象一个场景&#xff1a;NPC能够自然地跟随玩家的移动而转动头部&#xff0c;或是怪物精准锁定目标时的头部动作——这些细节往往…...

基于Orange Pi 5 Plus与DEEPX栈的边缘AI部署实战指南

1. 项目概述&#xff1a;当一块开发板遇见AI大潮最近在深圳参加了一场关于人工智能硬件与边缘计算的行业峰会&#xff0c;感触颇深。会上&#xff0c;一款基于Orange Pi 5 Plus开发板打造的DEEPX人工智能产品&#xff0c;实实在在地吸引了我的目光。这不仅仅是又一款“开发板AI…...

别再手动转换时间了!用Jackson和Spring的这两个注解,搞定Java日期序列化所有坑

彻底告别Java日期转换噩梦&#xff1a;Jackson与Spring注解实战指南 如果你曾在Java项目中处理过日期时间转换&#xff0c;一定对以下场景不陌生&#xff1a;前端传过来的字符串日期需要手动解析成Date对象&#xff0c;返回给前端的日期格式乱七八糟&#xff0c;时区问题导致时…...

CTF命令执行绕过:从空格过滤到cat被禁,我的实战踩坑与绕过思路全记录

CTF命令执行绕过&#xff1a;从空格过滤到cat被禁&#xff0c;我的实战踩坑与绕过思路全记录 第一次参加CTF比赛时&#xff0c;面对命令执行题目总是手足无措。直到那次遇到著名的"Ping Ping Ping"挑战&#xff0c;才真正体会到什么叫"绝处逢生"。本文将还…...

NVIDIA Vera CPU:首款专为Agentic AI设计的CPU架构深度解析

前言 2026年5月18日,NVIDIA正式宣布其首款专为Agentic AI(智能体AI)设计的CPU——Vera,已完成对Anthropic、OpenAI、SpaceX AI及甲骨文云的首批交付。这一里程碑事件标志着AI计算架构从"GPU中心"向"CPU-GPU协同"的重要转型。本文将深入解析Vera CPU的…...

51单片机定时器生成PWM波控制电机转速,从原理到代码调试全流程(基于STC89C52)

51单片机定时器生成PWM波控制电机转速&#xff1a;从寄存器配置到闭环调速实战 在嵌入式控制领域&#xff0c;PWM&#xff08;脉冲宽度调制&#xff09;技术如同精准的"电子油门"&#xff0c;通过调节脉冲占空比实现对电机转速的精细控制。STC89C52RC这颗经典的51内核…...