Go 面向对象,多态

面向对象

工程结构
在这里插入图片描述

新建一个oop.go

package _oop // Package _oop 引用名称import ("fmt""strconv"
)// GIRL 常量
const (// GIRL 自增GIRL Gender = iotaFIRSTSECONDTHIRD
)type Gender uint8 // 无符号的8位整数类型// User 结构体
type User struct {Name   stringAge    uint8Gender Gender
}/**
方法参数中带*意思是传递的是结构体的指针,如果修改会影响外部的值,如果不带星则是传入了一个复制出来的值
*/// AddAge 方法
func (u *User) AddAge() {u.Age++
}// Run 方法
func (*User) Run() {fmt.Println("user run")
}// Sleep 方法
func (*User) Sleep() {fmt.Println("user sleep")
}func UserCase() {u := new(User) // &为取地址符号u.Run()u.Sleep()fmt.Println(GIRL)fmt.Println(THIRD)fmt.Println("修改前的Age" + strconv.FormatInt(int64(u.Age), 10)) // strconv.FormatInt(int64(u.Age), 10) 这里是将十进制的数字转为了string类型u.AddAge()fmt.Println("修改前的Age" + strconv.FormatInt(int64(u.Age), 10))
}

再写一个main主程序掉用

package mainimport _study "study/oop" // 引入另一个go文件 _study为package名称 后边是他的存在路径以根目录为开始func main() {_study.UserCase()
}

多态

工程结构在这里插入图片描述
编写一个新的go文件,在go中只要是实现了接口的方法就算是实现

package polymorphismimport ("fmt"
)type Person interface {Run()Sleep()
}// Teacher 结构体
type Teacher struct {
}// Student 结构体
type Student struct {
}/**
方法参数中带*意思是传递的是结构体的指针,如果修改会影响外部的值,如果不带星则是传入了一个复制出来的值
*/// Run Teacher方法
func (*Teacher) Run() {fmt.Println("Teacher run")
}// Sleep Teacher方法
func (*Teacher) Sleep() {fmt.Println("Teacher sleep")
}// Run Student方法
func (*Student) Run() {fmt.Println("Student run")
}// Sleep Student方法
func (*Student) Sleep() {fmt.Println("Student sleep")
}func Process(person Person) {person.Run()person.Sleep()
}

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

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

相关文章

Gin学习笔记

Gin学习笔记 Gin文档:https://pkg.go.dev/github.com/gin-gonic/gin 1、快速入门 1.1、安装Gin go get -u github.com/gin-gonic/gin1.2、main.go package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {// 创建路由引…

个性化联邦学习-综述

介绍阅读的三篇个性化联邦学习的经典综述文章 Three Approaches for Personalization with Applications to Federated Learning 论文地址 文章的主要内容 介绍了用户聚类,数据插值,模型插值三种个性化联邦学习的方法。 用户聚类: 目的&a…

京东数据分析(京东销量):2023年9月京东投影机行业品牌销售排行榜

鲸参谋监测的京东平台9月份投影机市场销售数据已出炉! 根据鲸参谋电商数据分析平台的相关数据数据显示,9月份,京东平台投影机的销量为13万,环比下滑约17%,同比下滑约25%;销售额将近2.6亿,环比下…

三国志14信息查询小程序(历史武将信息一览)制作更新过程03-主要页面的设计

1,小程序的默认显示 分为三部分,头部的标题、中间的内容区和底部的标签栏。点击标签可以切换不同页面,这是在app.json文件中配置的。代码如下: //所有用到的页面都需要在 pages 数组中列出,否则小程序可能会出现错误或…

js原型链

什么叫原型链 原型链是js中的核心,原型链将各个属性链接起来,在原型链上面定义,原型链上的其他属性能够使用,原型链就是保证继承 原型链区分 原型链分为显式原型和隐式原型 显式原型:只有函数和构建函数才有显式原型…

C++——类和对象(初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类)

初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类 本章思维导图: 注:本章思维导图对应的xmind文件和.png文件都已同步导入至资源 文章目录 初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类1.…

VUE多语言i18n配置

1、i18n官网 格式化 | Vue I18n 2、安装i18n 8---指版本号 // vue2必须安装8版本的i18n包,vue3必须安装9版本的i18n包。 npm i vue-i18n8 3、卸载i18n npm uninstall vue-i18n 4、安装 js-cookie npm install vue-cookies --save 5、代码 5.1 main.js /…

自己实现一个自动检测网卡状态,并设置ip地址

阅读本文前,请先学习下面几篇文章 《搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?》 《简简单单教你如何用C语言列举当前所有网口!》 《Linux下C语言操作网卡的几个代码实例!特别实用》 《安卓如何设置…

王道考研--》顺序表课后习题C语言代码实现(冲刺)

考研是许多计算机科学专业学生追求高学历、寻求更好就业前景的途径。在考研过程中,数据结构是一个非常重要的科目,而代码实现题更是其中的难点之一。在这篇文章中,我们将探讨如何通过实现数据结构代码问题来提升考研成绩。无论您是否有编程经…

#龙迅视频转换IC LT7911D是一款高性能Type-C/DP/EDP 转MIPI®DSI/CSI/LVDS 芯片,适用于VR/显示应用。

1.说明 应用功能:LT7911D适用于DP1.2转MIPIDSI/MIPICSI/LVDS,EDP转MIPIDSI/MIPICSI/LVDS,TYPE-C转MIPIDSI/MIPICSI/LVDS应用方案 分辨率:单PORT高达4K30HZ,双PORT高达4K 60HZ 工作温度范围:−40C to 85C 产…

Java——》4种引用:强软弱虚

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

微服务项目,请求从发出到后端处理器的历程

点击登录按钮,发出 http://localhost:8803/service_6001/admin/login/in请求,这是一个由nginx配置的前端项目 查看配置文件,该条请求会被映射形成对http://localhost:51603/admin/login/in的post请求 upstream heima-admin-gateway {server localhost:51603; } server {liste…