广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Go语言使用组合的思想实现继承
  • 145
分享到

Go语言使用组合的思想实现继承

Go语言继承Go继承 2022-12-16 12:12:27 145人浏览 泡泡鱼
摘要

目录前言类型嵌入结构体类型嵌入接口类型嵌入小结前言 Go 语言的设计之初,就不打算支持面向对象的编程特性,因此 Go 不支持面向对象的三大特性之一——继承。但

前言

  • Go 语言的设计之初,就不打算支持面向对象编程特性,因此 Go 不支持面向对象的三大特性之一——继承。但是 Go 可以通过组合的思想去实现 “继承”。
  • 继承是面向对象的三大特性之一,继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
  • Go 语言里的“继承”体现如一个结构体拥有另一个结构体的的所有字段和方法,并在此基础上,定义新的字段和方法。

类型嵌入

组合的思想,在 Go 语言里的体现就是类型嵌入。类型嵌入,指的是一个类型的定义里嵌入了其他类型。类型嵌入包含两种,一种是结构体类型嵌入,另一种是接口类型嵌入。

结构体类型嵌入

import "fmt"

type Person struct {
    Name string
    Age  int
}

func (p Person) Introduce() {
    fmt.Printf("大家好,我叫%s,我今年%d岁了。\n", p.Name, p.Age)
}

type Student struct {
    Person
    School string
}

func (s Student) GoToTheClass() {
    fmt.Println("去上课...")
}

func main() {
    student := Student{}
    student.Name = "小明"
    student.Age = 18
    student.School = "太阳系大学"

    // 执行 Person 类型的 Introduce 方法
    student.Introduce()
    // 执行自身的 GoToTheClass 方法
    student.GoToTheClass()
}

执行结果:

大家好,我叫小明,我今年18岁了。
去上课...

  • 定义 Person 结构体,包含 NameAge 字段以及 Introduce 方法。
  • 定义 Student 结构体,定义 School 字段,GoToTheClass 方法,嵌入 Person 类型,直接以结构体类型作为结构体的字段,称为 结构体的类型嵌入,此字段也被视为 字段嵌入
  • 创建 Student 变量 student,通过 student 访问 NameAge 字段以及 Introduce 方法,明明 Student 没有定义这两个字段和这个方法,为什么能访问和使用呢?这是因为 Student “继承” 了 PersonPerson 结构体的字段和方法,在 Student 结构体里隐式实现。

接口类型嵌入

type Coder interface {
    Code()
}

type Tester interface {
    Test()
}

type TesterCoder interface {
    Tester
    Coder
}
  • 定义 Coder 接口,接口有 Code 编码方法。
  • 定义 Tester 接口,接口有 Test 测试方法。
  • 定义 TesterCoder 接口,内嵌 CoderTester 接口类型,通过组合,让 TesterCoder 接口拥有 Code 编码方法和 Test 测试方法。看到这里,有的小伙伴可能会想到开发岗测试岗测试开发岗
  • Go 标准库中可以看到很多这种组合方式的应用。

小结

本文介绍了 Go 语言中的 “继承”,它是通过组合的思想去模拟实现面向对象中的继承。然后介绍了什么是类型嵌入以及类型嵌入的两种类型,嵌入的类型包含的字段和方法以隐式存在。

“继承”的实现,能够提高代码的复用性,代码的维护性和扩展性也得以提高。

到此这篇关于Go语言使用组合的思想实现继承的文章就介绍到这了,更多相关Go语言继承内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Go语言使用组合的思想实现继承

本文链接: https://www.lsjlt.com/news/175016.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go语言使用组合的思想实现继承
    目录前言类型嵌入结构体类型嵌入接口类型嵌入小结前言 Go 语言的设计之初,就不打算支持面向对象的编程特性,因此 Go 不支持面向对象的三大特性之一——继承。但...
    99+
    2022-12-16
    Go语言继承 Go 继承
  • Go语言实现LRU算法的核心思想和实现过程
    目录GO实现Redis的LRU例子1.FIFO/LFU/LRU算法简介2.LRU算法实现2.1核心数据结构2.2查找功能2.3删除2.4新增或修改GO实现Redis的LRU例子 常见...
    99+
    2023-05-20
    Go LRU算法 GoLang LRU算法
  • Go语言如何实现LRU算法的核心思想和实现过程
    这篇文章主要介绍了Go语言如何实现LRU算法的核心思想和实现过程,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。GO实现Redis的LRU例子常见的三种缓存淘汰算法有三种:FIFO,LRU和LFU实现LRU缓存淘汰算法1....
    99+
    2023-07-06
  • PHP用trait或组合模式实现多继承的方法
    本篇内容主要讲解“PHP用trait或组合模式实现多继承的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP用trait或组合模式实现多继承的方法”吧!PHP的类继承只能是单继承,不能多继...
    99+
    2023-06-20
  • 使用go语言怎么实现数组比较
    这篇文章给大家介绍使用go语言怎么实现数组比较,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。比较两个数组是否相等如果两个数组类型相同(包括数组的长度,数组中元素的类型)的情况下,我们可以直接通过较运算符(==和!=)来...
    99+
    2023-06-15
  • go语言如何实现数组的调用
    Go语言中可以使用索引来调用数组中的元素。索引从0开始,依次递增。以下是一个示例代码:```gopackage mainimport...
    99+
    2023-10-12
    Go语言
  • go语言使用什么实现的
    go语言使用称为Go Runtime的虚拟机实现的。Go语言的虚拟机是由C语言实现的,它负责Go程序的运行和管理,这个虚拟机可以在不同的操作系统上运行,包括Linux、Windows、macOS等,还提供了垃圾回收机制,可以自动管理内存,减...
    99+
    2023-07-10
  • Bash、Go语言和Spring:实时应用开发的完美组合?
    随着数字化时代的到来,越来越多的应用程序需要在实时环境中运行。这些应用程序需要快速响应用户的操作,同时还需要具备高度的可靠性和稳定性。在这样的背景下,Bash、Go语言和Spring框架成为了实时应用开发的热门选择。本文将介绍这三种技术在...
    99+
    2023-11-10
    bash 实时 spring
  • go语言使用jwt认证的实现
    目录加密解密这几天在学习nodejs,进一步了解npm,学习过程中解开了以前的一个疑惑,以前不知道token可以携带信息,只以为是用来做对比的,学到了jwt身份认证,知道了如何使用的...
    99+
    2022-11-13
  • Go语言中数组的处理方法与自然语言处理技术结合,你能想到哪些应用场景?
    在当今信息化时代,自然语言处理技术已经变得越来越重要。而在这个过程中,数组的处理方法也扮演着重要的角色。在Go语言中,数组是一种基本的数据结构,它能够存储同一种类型的数据。而对于自然语言处理技术来说,数组的处理方法能够帮助人们更好地处理文...
    99+
    2023-10-07
    数组 自然语言处理 spring
  • 想要提高Shell缓存加载速度,该如何使用Go语言实现?
    Shell缓存是指Shell命令的缓存,可以提高Shell命令的执行速度。在使用Shell命令时,如果命令需要频繁执行,那么Shell缓存可以大大提高命令的执行速度。然而,随着缓存文件的增多,Shell缓存的加载速度也会变得越来越慢。那么...
    99+
    2023-08-19
    load shell 缓存
  • 如何利用go语言实现智能合约的功能
    在Go语言中实现智能合约的功能可以使用Solidity库来编写智能合约代码,并使用Go语言编写合约的部署和调用代码。以下是一个简单的...
    99+
    2023-10-12
    Go语言
  • 如何使用Go语言的数据类型来实现数组同步?
    Go语言是一门由Google开发的编程语言,它具有简单、快速、安全等特点。在Go语言中,数组是一种非常重要的数据类型,它可以用来存储一组相同数据类型的元素。但是,在多线程的情况下,如果多个线程同时对同一个数组进行操作,就可能会出现数据不一...
    99+
    2023-10-11
    数据类型 同步 数组
  • 使用Go语言写一个Http Server的实现
    目录调试功能1功能2功能3功能4Http Server 代码 go.mod: module goStudy1 go 1.17 main.go: package main imp...
    99+
    2022-11-13
  • 如何使用Go语言实现的api网关
    小编给大家分享一下如何使用Go语言实现的api网关,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!浏览器的请求去请求目标地址,然后获得结果它再发送给浏览器。对于Go语言来说,实现转发只需要简单的一行代码即可实现,如下所示:h...
    99+
    2023-06-21
  • 浅谈Go语言多态的实现与interface使用
    目录一、多态的含义二、抽象类与接口三、Golang中的接口四、总结一、多态的含义 对于Java或者是C++而言,我们在使用变量的时候,变量的类型是明确的。但是如果我们希望它可以宽松一...
    99+
    2022-11-12
  • Go语言实现23种设计模式的使用
    目录创建型模式工厂方法模式 Factory Method问题解决抽象工厂模式 Abstract Factory问题解决建造者模式 Builder问题解决原型模式 Prototype问...
    99+
    2022-11-13
  • go语言中如何使用select的实现示例
    目录1.基本语法2.select语句的实际应用在golang语言中,select语句 就是用来监听和channel有关的IO操作,当IO操作发生时,触发相应的case动作。...
    99+
    2022-11-13
  • Go语言使用buffer读取文件的实现示例
    目录使用 bufio 包写入文件使用 bufio 包读取文件buffer 是缓冲器的意思,Go语言要实现缓冲读取需要使用到 bufio 包。bufio 包本身包装了 io.Reade...
    99+
    2023-05-14
    Go buffer读取文件 Go buffer读取
  • go语言使用Casbin实现角色的权限控制
    目录介绍 Casbin 是什么?两个核心概念:工作原理:实战初始化数据库用户权限的增删改查总代码封装后的代码参考 本文主要介绍了go语言使用Casbin实现角色的权限控制,分享给大家...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作