教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Go语言中 多态的理解和实现细节 (Golang经典编程案例)

Go语言中 多态的理解和实现细节 (Golang经典编程案例)

发布时间:2022-02-06   编辑:jiaochengji.com
教程集为您提供Go语言中 多态的理解和实现细节 (Golang经典编程案例)等资源,欢迎您收藏本站,我们将为您提供最新的Go语言中 多态的理解和实现细节 (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中,多态以接口实现,可以按照统一的接口来调用不同的实现,这时接口变量就呈现多种不同的形态。

接口体现多态有两种表现方式

<ol><li>多态参数;
</li><li>多态数组。</li></ol>

下面以一个案例详细演示多态

<pre><code class="lang-go hljs"><span class="token keyword">package</span> main <span class="token keyword">import</span> <span class="token string">"fmt"</span> <span class="token comment">//声明一个接口</span> <span class="token keyword">type</span> Usb <span class="token keyword">interface</span> <span class="token punctuation">{</span> <span class="token comment">//声明两个没有实现的方法</span> <span class="token function">Start</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token function">Stop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">type</span> Phone <span class="token keyword">struct</span> <span class="token punctuation">{</span> name <span class="token builtin">string</span> <span class="token punctuation">}</span> <span class="token comment">//让Phone实现Usb接口的方法</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>p Phone<span class="token punctuation">)</span> <span class="token function">Start</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"手机开始工作..."</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>p Phone<span class="token punctuation">)</span> <span class="token function">Stop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"手机停止工作..."</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">type</span> Camera <span class="token keyword">struct</span> <span class="token punctuation">{</span> name <span class="token builtin">string</span> <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>c Camera<span class="token punctuation">)</span> <span class="token function">Start</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"相机开始工作..."</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>c Camera<span class="token punctuation">)</span> <span class="token function">Stop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"相机停止工作..."</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//定义一个Usb接口数组,可以存放Phone和Canera的结构体变量</span> <span class="token comment">//这里就体现出多态数组</span> <span class="token keyword">var</span> usbArr <span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span>Usb usbArr<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=</span> Phone<span class="token punctuation">{</span><span class="token string">"小米"</span><span class="token punctuation">}</span> usbArr<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> Phone<span class="token punctuation">{</span><span class="token string">"vivo"</span><span class="token punctuation">}</span> usbArr<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">=</span> Camera<span class="token punctuation">{</span><span class="token string">"诺基亚"</span><span class="token punctuation">}</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>usbArr<span class="token punctuation">)</span> test <span class="token operator">:=</span> Phone<span class="token punctuation">{</span><span class="token punctuation">}</span> test<span class="token punctuation">.</span>name <span class="token operator">=</span> <span class="token string">"小米"</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>test<span class="token punctuation">.</span>name<span class="token punctuation">)</span> test<span class="token punctuation">.</span><span class="token function">Start</span><span class="token punctuation">(</span><span class="token punctuation">)</span> test<span class="token punctuation">.</span><span class="token function">Stop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> test1 <span class="token operator">:=</span> Camera<span class="token punctuation">{</span><span class="token punctuation">}</span> test1<span class="token punctuation">.</span>name <span class="token operator">=</span> <span class="token string">"索尼相机"</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>test1<span class="token punctuation">.</span>name<span class="token punctuation">)</span> test1<span class="token punctuation">.</span><span class="token function">Start</span><span class="token punctuation">(</span><span class="token punctuation">)</span> test1<span class="token punctuation">.</span><span class="token function">Stop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> </code></pre>

执行结果如下图所示:

到此这篇关于“Go语言中 多态的理解和实现细节 (Golang经典编程案例)”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
想系统学习GO语言(Golang
go run main.go 参数_Go语言入门:Hello world
Go 语言到底适合干什么?
[GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及
golang url 收集
Go 语言十年而立,Go2 蓄势待发
兄弟连golang神技(1)-关于 Go 语言的介绍
go语言和python哪个难
golang和python有什么区别?
Go 开发关键技术指南 | 为什么你要选择 Go?(内含超全知识大图)

[关闭]
~ ~