Golang中继承与接口实现详解

这篇具有很好参考价值的文章主要介绍了Golang中继承与接口实现详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

探索Golang中通过嵌套匿名结构体实现继承的方法,以及利用接口实现多态的原理。深入了解Golang中继承与接口的应用和实现方式。

封装

  • 类似java的类的封装,这里我们利用大小写和工厂模式来实现封装的功能

  • 略过

继承

  • 相似的类具有相似的方法,反复绑定相同的方法,代码冗余,所以引入了继承的概念

  • 嵌套匿名结构体来实现继承的效果

  • 动手实践!

  • type Node struct {
    	Name     string `json:"name"`
    	Password string `json:"password"`}type Point struct {
    	Node
    	X int
    	Y int}func (a *Node) ok() {
    	a.Name = "bbbb"}func main() {
    
    	var a Point = Point{
    		Node{"aaa", "bbb"},
    		1,
    		2,
    	}
    
    	a.ok()
    
    	fmt.Println(a)}


  • 注意看,a.ok()其实是a.Node.ok()底层自动识别,可以省略匿名结构体

  • 基本数据类型可以匿名,但是不能出现多个相同类型的匿名基本类型

接口

  • 多态主要就是由接口来实现的

  • 声明

  • type inter interface {
    	a()
    	b()}


  • 实现接口

  • import "fmt"type inter interface {
    	a()
    	b()}type obj1 struct {}type union struct {}func (o obj1) a() {
    	fmt.Println("okkk")
    	//用node对象给接口的a()实现}func (o obj1) b() {
    	fmt.Println("ohhh")}func (u union) ok(in inter) {
    	in.a()
    	in.b()}func main() {
    
    	x := union{}
    	y := obj1{}
    	x.ok(y)}


  • 从上面我们可以看到,在声明一个接口之后,我们用工厂方法法obj对应接口的所有方法给实现了,然后另外整一个抽象类似的的结构体,绑定一个方法运行接口,这样我们就能通过接口把这两个类给链接在一起。

  • 总结。

  • interface类型可以定义一组方法,方法不用实现,并且不能含有变量

  • Go语言没有implements关键字,只要一个变量类型,绑定了接口中所有的方法,这个变量就能实现这个接口

  • 这个变量就能导入到含有接口作为变量的函数内文章来源地址https://www.toymoban.com/news/detail-673782.html

到了这里,关于Golang中继承与接口实现详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA如何利用接口实现多继承问题

    hello,上文带大家学习了java中类的继承,我们可以创建一个父类,将类中的共性抽取出来,通过子类继承的方式来实现代码的复用。今天带大家学习不同类之间的另外几种关系,即多态抽象类和接口。 多态,从字面意思去形象的理解可以解释为:针对不同的对象执行某一行为

    2024年03月08日
    浏览(36)
  • TypeScript--接口interface的定义,实现,继承

    可浏览博客主页的 TypeScript 专栏,会陆续添加相关文章,有问题或者可以优化的地方也希望大大门告知 共同进步 :) ts版本 Version 4.8.4 TypeScript的核心原则之一是对值所具有的结构进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里,接口的作

    2023年04月12日
    浏览(39)
  • Java 高级应用-多线程-(一)实现 Runnable 接口与继承 Thread 类

    1.1 程序、进程与线程 • 程序(program):为完成特定任务,用某种语言编写的一组指令的集合。即指一段 静态的代码,静态对象。 • 进程(process):程序的一次执行过程,或是正在内存中运行的应用程序。如:运行 中的 QQ,运行中的网易音乐播放器。 – 每个进程都有一

    2024年02月08日
    浏览(54)
  • golang的继承

    golang中并没有继承以及oop,但是我们可以通过struct嵌套来完成这个操作。 定义struct 以下定义了一个Person结构体,这个结构体有Eat方法以及三个属性 定义嵌套struct 如上,Chinese嵌套了Person,所以Chinese也有Person的属性,以及方法 3. main.go

    2024年02月11日
    浏览(32)
  • C# 父类实现的 IEquatable<T> 接口,重写的相等性判断函数都能被子类继承

    在父类重写的 Equals 方法,继承的 IEquatable 接口,重写的 == ,!= 运算符,重写的 GetHashCode 方法在子类中仍然是表现为被重写的状态。 现在让子类也实现 IEquatable 接口 此时代码提示如下 子类实现接口后,调用的默认就是子类实现的 Equals 方法。也可以用强制转换调用父类的

    2024年02月16日
    浏览(38)
  • 使用vscode写golang的一些大坑(单元测试、goimports、接口实现)

    之前使用的是goland,定位代码、代码补全、代码测试、git版本管理一应俱全,使用方便,但是奈何内存占用太大,平时使用的的项目又比较多,所以决定转战vscode。 在使用vscode开发的过程,目前碰到了三个问题: 查看源码时,无法根据接口定义查找到所有的实现。 goland的

    2024年02月06日
    浏览(41)
  • 【C#】当重复使用一段代码倒计时时,定义接口类和通过实现类继承接口方式进行封装方法和体现代码灵活性

    欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解水平有限

    2024年01月19日
    浏览(44)
  • 小米路由器中继怎么设置使用?小米路由器mini中继设置教程图文详解

    路由器中继相信很多朋友比较陌生,其实路由器中继是无线路由在网络连接中起到中继的作用,能实现信号的中继和放大, 从而延伸无线网络的覆盖范围,其需要两台以上无线路由器来实现。今天,yii666小编为大家带来了小米路由器mini中继设置教程,希望对于还不了解路由器中

    2024年02月07日
    浏览(57)
  • ChatGPT垂直行业私有数据知识库功能-咨询接口采用流式响应输出-JS和Golang实现流式响应

    近期开发私有数据知识库功能,想要实现和ChatGPT聊天效果类似的逐字流式输出展示效果。 GPT3.5本身就有流式聊天补全接口,后端Golang对接后,也需要能流式输出。下面就介绍下前端JS后端Golang来实现这种输出效果   大部分介绍是使用EventStream来实现,我现在不使用EventStream也

    2023年04月10日
    浏览(41)
  • c# 继承自接口

    c# 继承自接口 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test02 { interface ImyInterface { /// /// 编号(可读可写) /// string ID { get; set; } /// /// 姓名(可读可写) /// string Name { get; set; } /// /// 显示定义的编号和姓名 /// void ShowInfo(); } class Program:ImyInterfac

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包