golang继承的简单应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package main
 
import (
    "fmt"
)
 
//继承可以解决代码复用,让编程更加接近人类思维
//当多个结构体存在相同属性和方法时,可以从这些结构体中抽象出结构体,在该结构体中定义这些相同的属性和方法
//其他结构体不需要重新定义这些属性和方法,只需要嵌套一个匿名结构体即可
//也就是说golang中,如果一个struct嵌套了另一个匿名结构体,那么这个结构体可以直接访问匿名结构体的字段和方法,从而实现了继承的特性
 
type Student struct {
    Name  string
    Age   int
    Score int
}
type Pupil struct {
    Student//嵌入匿名结构体Student
}
type Graduate struct {
    Student
}
 
func (stu *Student) ShowInfo() {
 
    fmt.Printf("学生名=%v 年龄=%v 成绩=%v\n", stu.Name, stu.Age, stu.Score)
}
func (stu *Student) SetScore(score int) {
    stu.Score = score
}
func (stu *Pupil) testing() {
    fmt.Println("小学生正在考试中....")
}
func (stu *Graduate) testing() {
    fmt.Println("大学生正在考试中....")
}
func main() {
 
    pupil := &Pupil{}
    pupil.Student.Name = "tom"
    pupil.Student.Age = 8
    pupil.testing()
    pupil.Student.SetScore(80)
    pupil.Student.ShowInfo()
 
    graduate := &Graduate{}
    graduate.Student.Name = "jack"
    graduate.Student.Age = 22
    graduate.testing()
    graduate.Student.SetScore(90)
    graduate.Student.ShowInfo()
}

  


__EOF__

本文作者StarGazer
本文链接https://www.cnblogs.com/PatrickStarGazer/p/15988330.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Star_Gazer  阅读(278)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示