教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go语言之类型与接口的关系

go语言之类型与接口的关系

发布时间:2022-02-20   编辑:jiaochengji.com
教程集为您提供go语言之类型与接口的关系等资源,欢迎您收藏本站,我们将为您提供最新的go语言之类型与接口的关系资源
<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><pre><code>go语言的类型和接口的之间是一对多(或多对一)的关系 以下为概念实例生产理解,便于以后在复杂的类型与接口环境中使用 </code></pre>

一,一个类型可以实现多个接口 而接口间彼此独立,不知道对方的实现。

<pre><code class="lang-go hljs"><span class="token keyword">type</span> HandlerInterface <span class="token keyword">interface</span> <span class="token punctuation">{</span> <span class="token function">OnRequset</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token function">IsRequestOk</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token builtin">bool</span> <span class="token punctuation">}</span> <span class="token keyword">type</span> Test2 <span class="token keyword">struct</span><span class="token punctuation">{</span><span class="token comment">//... </span> <span class="token punctuation">}</span> <span class="token keyword">type</span> Test <span class="token keyword">struct</span><span class="token punctuation">{</span> ID <span class="token builtin">int</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 builtin">string</span> <span class="token comment">//接口函数</span> HandlerInterface <span class="token comment">//接口函数</span> Test2 <span class="token comment">//结构嵌套</span> <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token function">NewTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">*</span>Test<span class="token punctuation">{</span><span class="token comment">//...</span> <span class="token keyword">return</span> <span class="token operator">&</span>Test<span class="token punctuation">{</span><span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">func</span><span class="token punctuation">(</span>t <span class="token operator">*</span>Test<span class="token punctuation">)</span>OnRequset<span class="token punctuation">{</span><span class="token comment">//...</span> <span class="token punctuation">}</span> <span class="token keyword">func</span><span class="token punctuation">(</span>t <span class="token operator">*</span>Test<span class="token punctuation">)</span>IsRequestOk<span class="token punctuation">{</span><span class="token comment">//...</span> <span class="token punctuation">}</span> </code></pre>

二,一个接口可以有多个结构实现

<pre><code>一个接口的方法,不一定需要由一个类型完全实现, 接口的方法可以通过在类型中嵌入其他类型或者结构体来实现。 也就是说,使用者并不关心某个接口的方法是通过一个类型完全实现的, 还是通过多个结构嵌入到一个结构体中拼凑起来共同实现的。 </code></pre> <pre><code class="lang-go hljs"><span class="token comment">//老司机开车 这个接口函数可不是一个结构体完成的</span> <span class="token keyword">type</span> Car <span class="token keyword">interface</span> <span class="token punctuation">{</span> <span class="token function">Start</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">// 开启</span> <span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token builtin">string</span> <span class="token comment">// 关闭</span> <span class="token punctuation">}</span> <span class="token comment">// 熄火</span> <span class="token keyword">type</span> Close <span class="token keyword">struct</span> <span class="token punctuation">{</span><span class="token comment">//...</span> <span class="token punctuation">}</span> <span class="token comment">// 实现Car 的close()方法</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>c <span class="token operator">*</span>Close<span class="token punctuation">)</span> <span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token builtin">string</span> <span class="token punctuation">{</span><span class="token comment">//...</span> <span class="token punctuation">}</span> <span class="token comment">// 人为</span> <span class="token keyword">type</span> People <span class="token keyword">struct</span> <span class="token punctuation">{</span> Close <span class="token comment">// 嵌入日志器</span> <span class="token punctuation">}</span> <span class="token comment">// 实现Car的Start()方法</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>p <span class="token operator">*</span>People<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><span class="token comment">//...</span> <span class="token punctuation">}</span></code></pre> 到此这篇关于“go语言之类型与接口的关系”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go 语言到底适合干什么?
go语言学习笔记(十三)——接口类型
基于类型系统的面向对象编程语言Go
Go语言学习3----Go语言特色
go 获取函数地址_Go语言基础--接口浅析
兄弟连golang神技(1)-关于 Go 语言的介绍
Go语言发展历史、核心、特性及学习路线
Go语言基础之接口(面向对象编程下)
Go语言接口(interface)的实现原理
关于Golang的那些事(六) -- 接口

[关闭]
~ ~