教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang之抽象类实现

golang之抽象类实现

发布时间:2022-02-02   编辑:jiaochengji.com
教程集为您提供golang之抽象类实现等资源,欢迎您收藏本站,我们将为您提供最新的golang之抽象类实现资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg>

毋庸置疑,golang是一门相当好的语言,稍微用得不太顺手的地方就是没有语法层面的抽象类支持。但这也不是完全没有解决办法,利用接口和组合继承,可以实现抽象类。
Java中一段抽象类代码如下:

<pre><code class="lang-Java hljs">public abstract class People { public String name; public int age; abstract void run(); } class User { public void usePeople(People p) { System.out.println(p.name); System.out.println(p.age); p.name = "Alice"; p.age = 1; p.run(); } } </code></pre>

由于golang中的结构体不支持抽象方法,而接口不能有字段,因此可以用如下方法实现抽象类:

<pre><code class="lang-golang hljs">type IPeople interface { GetName() string SetName(string) GetAge() int SetAge(int) Run() } type AbstractPeople struct { IPeople name string age int } func (a AbstractPeople) GetName() string { return a.name } func (a *AbstractPeople) SetName(newName string) { a.name = newName } func (a AbstractPeople) GetAge() int { return a.age } func (a *AbstractPeople) SetAge(newAge int) { a.age = newAge } // user. func UsePeople(p IPeople) { fmt.Println(p.GetName()) fmt.Println(p.GetAge()) p.SetName("Alice") p.SetAge(p.GetAge() 1) p.Run() } </code></pre> 到此这篇关于“golang之抽象类实现”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
php中抽象方法与普通方法的主要区别是什么
php中关于抽象(abstract)类和抽象方法的问题解析
工作好多年有可能还未真正了解接口和抽象类
golang之抽象类实现
Golang设计模式之桥接模式
抽象类、接口与包
Go 编程: 应用级抽象之信号管控
php 抽象方法和普通方法的区别
Golang设计模式之抽象工厂模式
【Golang实现设计模式】桥接模式

[关闭]
~ ~