教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go语言学习笔记 — 接口 — 实现接口的条件(2):接口中的方法都被实现

go语言学习笔记 — 接口 — 实现接口的条件(2):接口中的方法都被实现

发布时间:2022-01-30   编辑: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>

当一个接口含有多个方法时,只有这些接口方法都被实现了,我们才能正确编译并使用接口。如下所示,在接口中包含WriteData方法和CanWrite方法,只有在file结构体绑定方法WriteData和CanWrite之后,才能正常使用接口。

<pre><code class="lang-go hljs"><span class="token keyword">type</span> DataWwriter <span class="token keyword">interface</span> <span class="token punctuation">{</span> <span class="token function">WriteData</span><span class="token punctuation">(</span>data <span class="token keyword">interface</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token function">CanWrite</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token builtin">bool</span> <span class="token comment">// 新增接口方法CanWrite</span> <span class="token punctuation">}</span> <span class="token keyword">type</span> file <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>d <span class="token operator">*</span>file<span class="token punctuation">)</span> <span class="token function">WriteData</span><span class="token punctuation">(</span>data <span class="token keyword">interface</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token builtin">error</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>d <span class="token operator">*</span>file<span class="token punctuation">)</span> <span class="token function">WriteData</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 operator">...</span> <span class="token punctuation">}</span> </code></pre>

go语言的接口实现是隐式的,我们无须让实现接口的(结构体)类型知道有哪些接口(需要被实现),这个称为非侵入式设计。

我们在编写(接口)方法时,无法预测未来有哪些(接口)方法会变成接口。一旦某个接口被创建出来,要求旧代码来实现这个接口,就需要修改旧代码的派生部分,这一般会造成雪崩式的重新编译。

<blockquote>

注: 传统的派生接口和类构建模式,使类型之间有强耦合的父子关系。这种关系一般以类派生图的方式运行。随着系统功能的不断增加,这棵“派生树“会越来越复杂。

<code>非侵入式设计</code>让go程序实现的所有类型都是<code>平行的、组合的</code>。因此,使用go时,不需要也不可能<code>有类派生</code>,开发者唯一需要关注的是<code>“我需要什么,我能实现什么”</code>。

</blockquote> 到此这篇关于“go语言学习笔记 — 接口 — 实现接口的条件(2):接口中的方法都被实现”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
go语言学习笔记 — 接口 — 实现接口的条件(2):接口中的方法都被实现
go语言学习笔记(十三)——接口类型
go语言学习笔记 — 接口 — 接口声明:接口是什么,接口的声明形式,开发中常见的接口写法
网页标题随机显示名言js代码
asp.net常用http状态码表
php实现简单用户登录功能程序代码
go struct 成员变量后面再加个字符串是什么意思?_Go语言的学习笔记(第十章) 接口...
go语言学习笔记 — 接口 — 接口的嵌套组合:把多个接口放到一个接口内
想系统学习GO语言(Golang
mysql中thread_cache和table_cache参数详解

[关闭]
~ ~