Go语言 类继承

devtools/2024/11/13 5:18:32/

 本篇文章主要内容为Go语言类继承介绍及类继承示例。

目录

继承

定义父类

类嵌套

定义学生类

赋值及调用

继承

定义老师类

赋值及调用

同名字段

访问权限

总结


继承

Go 语言中没有继承的概念,所以结构、接口之间也没有父子关系。

Go 语言提倡的是组合利用组合达到代码复用的目的。

定义父类

首先定义一个人类,并设定名称、年龄、性别三个属性,绑定一个吃东西的类方法。

示例如下:

package mainimport "fmt"type Human struct {// 成员属性name   stringage    intgender string
}// 在类外绑定方法
func (this *Human) Eat() {fmt.Println("this is :", this.name, " eating")
}

 

类嵌套

类的嵌套而非类的继承。

定义学生类

定义一个学生类,包含Human类型的变量,此时是类的嵌套。

示例如下:

type Student1 struct {hum    Human // 包含Human类型的变量,此时是类的嵌套score  float64school string
}

 

赋值及调用

对学生类赋值及打印学生类的属性。

示例如下:

func main() {s1 := Student1{hum: Human{name:   "hong",age:    12,gender: "女生",},school: "清华附小",}fmt.Println("s1.name:", s1.hum.name)fmt.Println("s1.school:", s1.school)
}

运行结果:

s1.name: hong
s1.school: 清华附小

 

继承

定义老师类

定义一个老师,去继承Human类。

示例如下:

type Teacher struct {Human // 直接写human类型,没有字段名字subject string //学科
}

 

赋值及调用

定义一个老师,并赋值老师的属性。

示例如下:

func main() {t1 := Teacher{}t1.subject = "英语"// 下面的这些字段都是继承自Humant1.name = "朱老师"t1.age = 40t1.gender = "女"fmt.Println("t1:", t1)// 调用继承的方法t1.Eat()
}

 

同名字段

继承的时候,虽然我们没有定义字段名字,但是自动会创建一个默认同名字段

这是为了在子类中依然可以操作父类,因为:子类父类可能出现同名字段。

示例如下:

fmt.Println("t1.Human.name:", t1.Human.name)

 

访问权限

在go语言中,权限都是通过首字母大小写来控制

1.import --> 如果包名不同,那么只有大写字母开头的才是public的

2.对于类里面的成员、方法 --> 只有大写开头的才能在其他包中使用

总结

本篇文章主要内容为Go语言类继承介绍及类继承示例。


http://www.ppmy.cn/devtools/96388.html

相关文章

How to run angular CICD on gitlab-runner of wsl?

前提文件 .gitlab-ci.yml, .dockerignore, ci-funcs.sh, Dockerfile, karma.conf.js, nginx.conf, nginx-custom.conf, sonar-project.properties 1.test.ts const context require.context(./app/pages, true, /\.spec\.ts$/); 2.sonar-project.properties sonar.sourcessrc/…

【BUU】[Dest0g3 520迎新赛]Really Easy SQL

2024/8/14 [Dest0g3 520迎新赛]Really Easy SQL 题目标题说明是SQL注入 题目首页 页面title显示是钓鱼站点。 钓鱼站点主要为将我们的输入信息保存在数据库。后台应该是插入语句。 这里无论输入什么都显示密码错误, 只能尝试盲注,基于时间的盲注, 这里经过测试p…

SpringBoot依赖之Spring Data Redis 一 String类型

Spring Data Redis(一) 概念 Spring Data Redis (AccessDriver) 依赖名称: Spring Data Redis (AccessDriver)功能描述: Advanced and thread-safe Java Redis client for synchronous, asynchronous, and reactive usage. Supports Cluster, Sentinel, Pipelining, Auto-Re…

SQL触发器的级联魔力:数据完整性的守护者

标题:SQL触发器的级联魔力:数据完整性的守护者 在SQL的丰富世界中,触发器(Trigger)是一种特殊的存储过程,它能够自动执行响应数据库中的数据修改事件。而级联操作(Cascade)则是触发…

MQ高级消息队列

RabbitMq 使用mq的三个作用 第一个 异步操作 第二个 应用解耦 第三关 流量削峰 同步异步 同步调用就像是openfeign调用 一旦响应立即看到结果 异步通信就像是调用的时候可以干别的事,可以不用等待 开闭原则 面向修改关闭,面向拓展打开 mq用于流量削峰,多个业务之间的调用…

培训第二十七天(lvs_nat模式与lvs_dr模式配置)

上午 核心:内核中的ipvs,ipvsadm1、安装ipvsadm[rootnat ~]# yum -y install ipvsadm2、配置规则查看所有的规则,如果已经配置好规则,重启之后也就没有了[rootnat ~]# ipvsadm -L -n 1、配置vip网卡 (1)在…

golang的哪些内置的函数、方法返回值第二个值使用error,哪些使用ok

在 Go 语言中,许多内置函数和方法使用 error 返回值或 ok 布尔值。以下是一些常见的例子: 使用 error 的函数 文件操作 os.Open()os.Remove()os.Mkdir() file, err : os.Open("file.txt")网络操作 net.Dial()http.Get() resp, err : http.Get…

3-4 RGB LED(智能应用篇)

3-4 RGB LED(智能应用篇) 3-4 RGB LEDRGB-LED及电路示例程序效果演示 3-4 RGB LED Led的灯珠和灯带,相当于点和线(可以画出丰富否画面) 主要介绍led灯珠 RGB-LED及电路 RGB-LED可以发出红、绿、蓝色的光芒&#xff0…