当前位置: 首页 > 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("-----")
}
http://www.lryc.cn/news/110481.html

相关文章:

  • 在vue项目中封装WebSockets请求
  • Linux进程(二)
  • 使用pg_prewarm缓存PostgreSQL数据库表
  • LeetCode 28题:找出字符串中第一个匹配项的下标
  • flink+kafka+doris+springboot集成例子
  • ARM裸机-14(S5PV210的时钟系统)
  • Milvus Cloud凭借AI原生,可视化优势荣登全球向量数据库性能排行榜VectorDBBench.com 榜首
  • 测试岗?从功能测试进阶自动化测试开发,测试之路不迷茫...
  • 算法与数据结构(五)--树【1】树与二叉树是什么
  • 打开的idea项目maven不生效
  • kvm+qemu+libvirt管理虚机
  • 电气防火限流式保护器在汽车充电桩使用上的作用
  • VBA技术资料MF38:VBA_在Excel中隐藏公式
  • Gson:解析JSON为复杂对象:TypeToken
  • 伪彩色处理及算法
  • Gradle-02:问题Plugin with id ‘maven‘ not found
  • jupyter lab环境配置
  • Unity Sort Group(排序组)
  • 基于总线加锁和缓存锁(CPU实现原子操作的两种方式)
  • MybatisPlus存在 sql 注入漏洞(CVE-2023-25330)解决办法
  • 【java】使用maven完成一个servlet项目
  • 前端Vue入门-day07-Vuex入门
  • 2023再谈前端状态管理
  • ffmpeg SDL播放器--播放udp组播流
  • __attribute__((noreturn))
  • 遮挡边界处的深度补全和双曲面外推
  • LK-99室温超导激发万万亿市场,将对我们的生活产生哪些影响?
  • 子集——力扣78
  • 【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(8 月 2 日论文合集)
  • JDK中「SPI」原理分析