#yyds干货盘点#愚公系列2022年08月 Go教学课程 032-结构体方法继承

Posted 愚公搬代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点#愚公系列2022年08月 Go教学课程 032-结构体方法继承相关的知识,希望对你有一定的参考价值。

一、结构体方法继承

1.继承的概念

继承是指一个子类(或称为派生类)继承父类(或称为基类)的特征(属性和操作)。继承是面向对象程序设计时实现代码复用的重要手段,它允许在原有的类的基础上进行扩展,增加功能,这样新产生的类称为子类。

2.go中的继承

但在Go 语言本身并不支持继承。但可以使用组合的方法,实现类似继承的效果。Go 语言中,把一个结构体嵌入到另一个结构体的方法,称之为组合。

3.方法继承

package main

import "fmt"

type Student struct 
    Person
    score float64

type Person struct 
    id   int
    name string
    age  int


func (p *Person) PrintInfo() 
    fmt.Println(*p)


func main() 
    stu := StudentPerson101, "张三", 18, 90
    stu.PrintInfo()

4.方法继承案例

package main

import "fmt"

//记者:我叫张三 ,我的爱好是偷拍,我的年龄是34,我是一个男狗仔。
//程序员:我叫孙全,我的年龄是23,我是男生,我的工作年限是 3年。
// 1: 定义父类

type Person struct 
    name string
    age  int
    sex  string


// 2: 给父类添加方法。
func (p *Person) SetValue(userName string, userAge int, userSex string) 
    p.sex = userSex
    p.age = userAge
    p.name = userName


// 3: 定义相应的子类。
// 记者类
type Rep struct 
    Person
    Hobby string // 爱好


func (r *Rep) RepSayHello(h string) 
    r.Hobby = h
    fmt.Printf("我叫%s ,我的爱好是%s,我的年龄是%d,我是一个%s记者\\n", r.name, r.Hobby, r.age, r.sex)


// 程序员类
type Pro struct 
    Person
    WorkYear int


func (p *Pro) ProSayHello(workYear int) 
    p.WorkYear = workYear
    fmt.Printf("我叫%s,我的年龄是%d,我是%s,我的工作年限是 %d年\\n", p.name, p.age, p.sex, p.WorkYear)


// 4: 给子类添加相应的方法
// 5: 展示效果

func main() 
    var rep Rep
    rep.SetValue("小黄", 35, "男")
    rep.RepSayHello("跟拍")

    var pro Pro
    pro.SetValue("小菊", 28, "男")
    pro.ProSayHello(3)

以上是关于#yyds干货盘点#愚公系列2022年08月 Go教学课程 032-结构体方法继承的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#愚公系列2022年08月 Go教学课程 021-Go容器之切片操作

#yyds干货盘点#愚公系列2022年08月 Go教学课程 002-Go语言环境安装

#yyds干货盘点#愚公系列2022年08月 Go教学课程 031-结构体方法

#yyds干货盘点#愚公系列2022年08月 Go教学课程 035-接口和继承和转换与空接口

#yyds干货盘点#愚公系列2022年08月 Go教学课程 032-结构体方法继承

#yyds干货盘点#愚公系列2022年08月 Go教学课程 027-深拷贝和浅拷贝