教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go语言接口查询

go语言接口查询

发布时间:2022-03-20   编辑:jiaochengji.com
教程集为您提供go语言接口查询等资源,欢迎您收藏本站,我们将为您提供最新的go语言接口查询资源

一句话总结:如果接口A实现了接口B中所有方法,那么A可以转化为B接口。

<pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">package</span><span style="color:#c0c0c0"> </span>options</pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">type</span><span style="color:#c0c0c0"> </span><span style="color:#000080">IPeople</span><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">interface</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>GetName<span style="color:#000000">()</span><span style="color:#c0c0c0"> </span><span style="color:#000080">string</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">type</span><span style="color:#c0c0c0"> </span><span style="color:#000080">IPeople2</span><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">interface</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>GetName<span style="color:#000000">()</span><span style="color:#c0c0c0"> </span><span style="color:#000080">string</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>GetAge<span style="color:#000000">()</span><span style="color:#c0c0c0"> </span><span style="color:#000080">int</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#000000">}</span></pre>

<pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">package</span><span style="color:#c0c0c0"> </span>main</pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">import</span><span style="color:#c0c0c0"> </span><span style="color:#000000">(</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="color:#008000">"fmt"</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="color:#008000">"options"</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#000000">)</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">type</span><span style="color:#c0c0c0"> </span><span style="color:#000080">person</span><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">struct</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>name<span style="color:#c0c0c0"> </span><span style="color:#000080">string</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">func</span><span style="color:#c0c0c0"> </span><span style="color:#000000">(</span>p<span style="color:#c0c0c0"> </span><span style="color:#000000">*</span><span style="color:#000080">person</span><span style="color:#000000">)</span><span style="color:#c0c0c0"> </span><span style="color:#000000">GetName()</span><span style="color:#c0c0c0"> </span><span style="color:#000080">string</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">return</span><span style="color:#c0c0c0"> </span>p<span style="color:#000000">.</span>name</pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">type</span><span style="color:#c0c0c0"> </span><span style="color:#000080">person2</span><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">struct</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>name<span style="color:#c0c0c0"> </span><span style="color:#000080">string</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>age<span style="color:#c0c0c0"> </span><span style="color:#000080">int</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">func</span><span style="color:#c0c0c0"> </span><span style="color:#000000">(</span>p<span style="color:#c0c0c0"> </span><span style="color:#000000">*</span><span style="color:#000080">person2</span><span style="color:#000000">)</span><span style="color:#c0c0c0"> </span><span style="color:#000000">GetName()</span><span style="color:#c0c0c0"> </span><span style="color:#000080">string</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">return</span><span style="color:#c0c0c0"> </span>p<span style="color:#000000">.</span>name</pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">func</span><span style="color:#c0c0c0"> </span><span style="color:#000000">(</span>p<span style="color:#c0c0c0"> </span><span style="color:#000000">*</span><span style="color:#000080">person2</span><span style="color:#000000">)</span><span style="color:#c0c0c0"> </span><span style="color:#000000">GetAge()</span><span style="color:#c0c0c0"> </span><span style="color:#000080">int</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">return</span><span style="color:#c0c0c0"> </span>p<span style="color:#000000">.</span>age</pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080">func</span><span style="color:#c0c0c0"> </span><span style="color:#000000">main()</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="color:#008000">//p不可以转化为options.IPeople2接口,没有实现options.IPeople2接口中的GetAge()</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">var</span><span style="color:#c0c0c0"> </span>p<span style="color:#c0c0c0"> </span>options<span style="color:#000000">.</span>IPeople<span style="color:#c0c0c0"> </span><span style="color:#000000">=</span><span style="color:#c0c0c0"> </span><span style="color:#000000">&</span>person<span style="color:#000000">{</span><span style="color:#008000">"jack"</span><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">if</span><span style="color:#c0c0c0"> </span>p2<span style="color:#000000">,</span><span style="color:#c0c0c0"> </span>ok<span style="color:#c0c0c0"> </span><span style="color:#000000">:=</span><span style="color:#c0c0c0"> </span>p<span style="color:#000000">.(</span>options<span style="color:#000000">.</span>IPeople2<span style="color:#000000">);</span><span style="color:#c0c0c0"> </span>ok<span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>fmt<span style="color:#000000">.</span>Println<span style="color:#000000">(</span>p2<span style="color:#000000">.</span>GetName<span style="color:#000000">(),</span><span style="color:#c0c0c0"> </span>p2<span style="color:#000000">.</span>GetAge<span style="color:#000000">())</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="color:#000000">}</span><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">else</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>fmt<span style="color:#000000">.</span>Println<span style="color:#000000">(</span><span style="color:#008000">"p不是Ipeople2接口类型"</span><span style="color:#000000">)</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="color:#008000">//p2可以转化为options.IPeople接口,因为实现了options.IPeople接口的所有方法</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">var</span><span style="color:#c0c0c0"> </span>p2<span style="color:#c0c0c0"> </span>options<span style="color:#000000">.</span>IPeople2<span style="color:#c0c0c0"> </span><span style="color:#000000">=</span><span style="color:#c0c0c0"> </span><span style="color:#000000">&</span>person2<span style="color:#000000">{</span><span style="color:#008000">"mary"</span><span style="color:#000000">,</span><span style="color:#c0c0c0"> </span><span style="color:#800080">23</span><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">if</span><span style="color:#c0c0c0"> </span>p<span style="color:#000000">,</span><span style="color:#c0c0c0"> </span>ok<span style="color:#c0c0c0"> </span><span style="color:#000000">:=</span><span style="color:#c0c0c0"> </span>p2<span style="color:#000000">.(</span>options<span style="color:#000000">.</span>IPeople<span style="color:#000000">);</span><span style="color:#c0c0c0"> </span>ok<span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>fmt<span style="color:#000000">.</span>Println<span style="color:#000000">(</span>p<span style="color:#000000">.</span>GetName<span style="color:#000000">())</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080"/></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080"> var</span><span style="color:#c0c0c0"> </span>pp<span style="color:#c0c0c0"> </span>options<span style="color:#000000">.</span>IPeople<span style="color:#c0c0c0"> </span><span style="color:#000000">=</span><span style="color:#c0c0c0"> </span><span style="color:#000000">&</span>person<span style="color:#000000">{</span><span style="color:#008000">"alen"</span><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">if</span><span style="color:#c0c0c0"> </span>pp2<span style="color:#000000">,</span><span style="color:#c0c0c0"> </span>ok<span style="color:#c0c0c0"> </span><span style="color:#000000">:=</span><span style="color:#c0c0c0"> </span>pp<span style="color:#000000">.(*</span>person<span style="color:#000000">);</span><span style="color:#c0c0c0"> </span>ok<span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>fmt<span style="color:#000000">.</span>Println<span style="color:#000000">(</span>pp2<span style="color:#000000">.</span>GetName<span style="color:#000000">())</span><span style="color:#c0c0c0"> </span><span style="color:#008000">//pp接口指向的对象实例是否是*person类型,*不能忘</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="font-weight:600; color:#000080"> switch</span><span style="color:#c0c0c0"> </span>pp<span style="color:#000000">.(</span><span style="font-weight:600; color:#000080">type</span><span style="color:#000000">)</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">case</span><span style="color:#c0c0c0"> </span>options<span style="color:#000000">.</span>IPeople<span style="color:#000000">:</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>fmt<span style="color:#000000">.</span>Println<span style="color:#000000">(</span><span style="color:#008000">"options.IPeople"</span><span style="color:#000000">)</span><span style="color:#c0c0c0"> </span><span style="color:#008000">//判断接口的类型</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">case</span><span style="color:#c0c0c0"> </span>options<span style="color:#000000">.</span>IPeople2<span style="color:#000000">:</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>fmt<span style="color:#000000">.</span>Println<span style="color:#000000">(</span><span style="color:#008000">"options.IPeople2"</span><span style="color:#000000">)</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">default</span><span style="color:#000000">:</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>fmt<span style="color:#000000">.</span>Println<span style="color:#000000">(</span><span style="color:#008000">"can't</span><span style="color:#c0c0c0"> </span><span style="color:#008000">found"</span><span style="color:#000000">)</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="color:#000000">}</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">var</span><span style="color:#c0c0c0"> </span>ii<span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">interface</span><span style="color:#000000">{}</span><span style="color:#c0c0c0"> </span><span style="color:#000000">=</span><span style="color:#c0c0c0"> </span><span style="color:#800080">43</span><span style="color:#c0c0c0"> </span><span style="color:#008000">//默认int类型</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">switch</span><span style="color:#c0c0c0"> </span>ii<span style="color:#000000">.(</span><span style="font-weight:600; color:#000080">type</span><span style="color:#000000">)</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">case</span><span style="color:#c0c0c0"> </span><span style="color:#000080">int</span><span style="color:#000000">:</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>fmt<span style="color:#000000">.</span>Println<span style="color:#000000">(</span><span style="color:#008000">"int"</span><span style="color:#000000">)</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="font-weight:600; color:#000080">default</span><span style="color:#000000">:</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span>fmt<span style="color:#000000">.</span>Println<span style="color:#000000">(</span><span style="color:#008000">"can't</span><span style="color:#c0c0c0"> </span><span style="color:#008000">found"</span><span style="color:#000000">)</span></pre><pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#c0c0c0"> </span><span style="color:#000000">}</span></pre></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"><span style="color:#000000">}</span></pre> <pre style="margin-bottom:0px; margin-left:0px; margin-right:0px"/>

到此这篇关于“go语言接口查询”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
想系统学习GO语言(Golang
基于类型系统的面向对象编程语言Go
Golang语言基础课件
go语言中的继承和接口使用(八)
Go语言_接口查询
Golang库集合
Go 之 interface接口理解
Go语言发展历史、核心、特性及学习路线
Golang 基础教程
go语言接口的基本概念

[关闭]
~ ~