教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go语言-接口的声明

go语言-接口的声明

发布时间:2022-01-06   编辑: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><h1>一、概述</h1> <ul><li>接口是一种类型,它规定了变量有哪些方法</li><li>go接口是满足隐式实现的(不用显式声明实现关系),即不用写implements声明</li><li>接口约束变量的行为,不约束属性.对于这样的场景,我不管变量的类型,只关心能调用它的哪些行为</li><li>当你看到一个接口类型的值时,你不知道它是什么,唯一知道的是通过它的方法能做什么?</li></ul>

接口引入示例:

<pre><code class="lang-go hljs"><span class="token keyword">type</span> cat <span class="token keyword">struct</span><span class="token punctuation">{</span><span class="token punctuation">}</span> <span class="token keyword">type</span> dog <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>c cat<span class="token punctuation">)</span> <span class="token function">speak</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>d dog<span class="token punctuation">)</span> <span class="token function">speak</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">"wang"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">// 这里对实例的行为有要求</span> <span class="token keyword">func</span> <span class="token function">da</span><span class="token punctuation">(</span>d dog<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token comment">// 接受一个参数,传进来什么,就打什么</span> d<span class="token punctuation">.</span><span class="token function">speak</span><span class="token punctuation">(</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 keyword">var</span> c1 cat <span class="token keyword">var</span> d1 dog <span class="token comment">//报错</span> <span class="token function">da</span><span class="token punctuation">(</span>c1<span class="token punctuation">)</span> <span class="token function">da</span><span class="token punctuation">(</span>d1<span class="token punctuation">)</span> <span class="token punctuation">}</span> </code></pre> <h1>
二、接口声明的格式</h1> <pre><code class="lang-go hljs"><span class="token keyword">type</span> 接口类型名 <span class="token keyword">interface</span><span class="token punctuation">{</span> 方法名<span class="token function">1</span><span class="token punctuation">(</span>参数列表<span class="token number">1</span><span class="token punctuation">)</span>返回值列表<span class="token number">1</span> xxx <span class="token punctuation">}</span> <span class="token keyword">type</span> a <span class="token keyword">interface</span><span class="token punctuation">{</span> xxx <span class="token punctuation">}</span> </code></pre> <ul><li>方法名首字母是大写的,且这个接口类型名首字母也是大写时,方法可以被接口所在的包之外的代码访问</li></ul><h1>三、开发中常见的接口及写法示例</h1> <pre><code class="lang-go hljs"><span class="token keyword">type</span> Writer <span class="token keyword">interface</span><span class="token punctuation">{</span> <span class="token function">Write</span><span class="token punctuation">(</span>p <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token builtin">byte</span><span class="token punctuation">)</span><span class="token punctuation">(</span>n <span class="token builtin">int</span><span class="token punctuation">,</span>err <span class="token builtin">error</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">type</span> Stringer <span class="token keyword">interface</span><span class="token punctuation">{</span> <span class="token function">String</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token builtin">string</span> <span class="token punctuation">}</span> </code></pre> 到此这篇关于“go语言-接口的声明”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Golang 基础教程
go run main.go 参数_Go语言入门:Hello world
go语言学习-接口赋值的两种类型
Go语言接口interface
浅谈golang中的接口
Go 语言到底适合干什么?
Golang 复合数据类型:接口
Go语言学习3----Go语言特色
想系统学习GO语言(Golang
go语言接口的基本概念

[关闭]
~ ~