教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go语言学习笔记 — 接口 — 接口与类型的关系(2):多个类型可以实现一个(相同)接口

go语言学习笔记 — 接口 — 接口与类型的关系(2):多个类型可以实现一个(相同)接口

发布时间:2021-12-02   编辑:jiaochengji.com
教程集为您提供go语言学习笔记 — 接口 — 接口与类型的关系(2):多个类型可以实现一个(相同)接口等资源,欢迎您收藏本站,我们将为您提供最新的go语言学习笔记 — 接口 — 接口与类型的关系(2):多个类型可以实现一个(相同)接口资源
<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 class="lang-go hljs"><span class="token comment">// 接口定义</span> <span class="token keyword">type</span> Service <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">// 待实现的Start方法</span> <span class="token function">Log</span><span class="token punctuation">(</span><span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token comment">// 待实现的Log方法</span> <span class="token punctuation">}</span> <span class="token comment">// 接口实现</span> <span class="token keyword">type</span> Logger <span class="token keyword">struct</span> <span class="token punctuation">{</span><span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>g <span class="token operator">*</span>Logger<span class="token punctuation">)</span> <span class="token function">Log</span><span class="token punctuation">(</span>l <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span> <span class="token comment">// 实现Service接口的Log方法</span> <span class="token keyword">type</span> GameService <span class="token keyword">struct</span> <span class="token punctuation">{</span> <span class="token comment">// 结构体内嵌组合,能最大限度避免代码冗余,简化代码结构</span> Logger <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>g <span class="token operator">*</span>GameService<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 punctuation">}</span> <span class="token comment">// 实现Service接口的Start方法</span> <span class="token comment">// 接口使用</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 keyword">var</span> s Service <span class="token operator">=</span> <span class="token function">new</span><span class="token punctuation">(</span>GameService<span class="token punctuation">)</span> <span class="token comment">// 实例化内嵌结构体</span> s<span class="token punctuation">.</span><span class="token function">Start</span><span class="token punctuation">(</span><span class="token punctuation">)</span> s<span class="token punctuation">.</span><span class="token function">Log</span><span class="token punctuation">(</span><span class="token string">"hello"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> </code></pre> 到此这篇关于“go语言学习笔记 — 接口 — 接口与类型的关系(2):多个类型可以实现一个(相同)接口”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
go语言学习笔记(十三)——接口类型
mysql中文乱码问题解决方法总结
常见的导致mysql中文乱码问题
go struct 成员变量后面再加个字符串是什么意思?_Go语言的学习笔记(第十章) 接口...
golang中接口赋值与方法集
go语言学习笔记 — 接口 — 接口与类型的关系(2):多个类型可以实现一个(相同)接口
go语言学习笔记 — 接口 — 接口声明:接口是什么,接口的声明形式,开发中常见的接口写法
go语言学习笔记 — 接口 — 实现接口的条件(2):接口中的方法都被实现
Golang学习笔记(十二):接口的声明与使用
go语言学习笔记 — 接口 — 接口的嵌套组合:把多个接口放到一个接口内

[关闭]
~ ~