教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go语言中的继承和接口使用(八)

go语言中的继承和接口使用(八)

发布时间:2022-01-25   编辑: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>1、初始化: 在go语言中,未进行显式初始化的变量都被初始化为该类型的零值,boo类型的零值为false,int类型的零值为0,,string类型的零值为空串。 在go语言中没有构造函数的概念,对象的创建由一个全局的创建函数来完成,以NewXXX命名,表示构造函数。 例如: rect1 := new(Rect) rect2 := &Rect{} rect3 := &Rect{0,0,100,200} rect4 := &Rect{width:100,height:200} 2、匿名组合: go语言中的继承是通过匿名组合来实现的,这样子实现的继承更加灵活。 3、可见性: go语言中的可见性是通过大小写来进行控制的,大写可以被其他包访问,小写只能被本包内部使用。 go语言中符号的访问性是包一级的,而不是类型一级的。 4、接口: 接口赋值: 1)将对象实例赋值给接口; 2)将一个接口赋值给另一个接口; 注意: 1)在go语言中将对象实例赋值给接口时,若不需要改变对象实例的值,则进行赋值时传递的是值传递;若需要修改对象实例的值,则需要进行引用传递 2)在go语言中将接口赋值给接口时,并需要互相赋值接口必须是等价的。如果接口A是接口B的子集,那么接口B可以赋值给接口A; 反之则会错误,因为这样做接口B无法调用接口A没有实现而自己已有的方法。 接口查询: 作用:接口转换 示例代码: var file1 Writer = ... // if 语句检查file1接口指向的对象实例是否实现了two.IStream接口,如果实现了则执行特定代码 if file2,ok := file1.(two.IStream);ok{ ... } var file1 Writer = ... // if 语句检查file1接口指向的对象实例是否是FIle* 类型,即对接口指向的对象类型进行判断。 if file2,ok := file1.(two.IStream);ok{ ... } 接口组合: 接口组合是类型匿名组合的特定场景,其只包含方法,不包含任何成员变量。 例如: //ReadWrite接口组合了Reader和Writer接口 type ReadWriter interface{ Reader Writer } 上面的操作实质是等同于如下写法: type ReadWriter interface{ Reader(p[] byte)(n ing,err error) Writer(p[] byte)(n ing,err error) } Any类型接口: Any类型接口可以指向任何对象,接受任意的对象实例,表示为interface{}.典型例子:fmt包中的PrintXX函数 var v1 interface{} =1 var v2 interface{} = "abc" </code></pre> <pre class="prettyprint"><code class=" hljs go">接口之间赋值实例: <span class="hljs-keyword">package</span> main <span class="hljs-keyword">import</span> <span class="hljs-string">"fmt"</span> <span class="hljs-keyword">type</span> Integer <span class="hljs-typename">int</span> <span class="hljs-keyword">func</span> (a Integer) Less(b Integer) <span class="hljs-typename">bool</span>{ ret := a < b fmt.Println(ret) <span class="hljs-keyword">return</span> ret } <span class="hljs-keyword">func</span> (a* Integer) Add(b Integer){ *a = b } <span class="hljs-keyword">type</span> LessAdder <span class="hljs-keyword">interface</span>{ Less(b Integer) <span class="hljs-typename">bool</span> Add(b Integer) } <span class="hljs-keyword">type</span> Lesser <span class="hljs-keyword">interface</span>{ Less(b Integer) <span class="hljs-typename">bool</span> } <span class="hljs-keyword">func</span> main(){ <span class="hljs-comment">//对象实例赋值给接口</span> <span class="hljs-keyword">var</span> a Integer =<span class="hljs-number"> 1</span> <span class="hljs-keyword">var</span> b LessAdder = &a <span class="hljs-comment">//在这里应该将类的引用赋值给接口,以便能够实现方法Addr()改变对象的值的作用,如果不需要改变对象的值则不需要传递类的引用</span> b.Add<span class="hljs-number">(123</span>) <span class="hljs-keyword">var</span> b1 Lesser = &a result := b1.Less<span class="hljs-number">(12</span>) fmt.Println(result) } </code></pre> 到此这篇关于“go语言中的继承和接口使用(八)”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
go语言中的继承和接口使用(八)
想系统学习GO语言(Golang
【Go语言入门系列】(八)Go语言是不是面向对象语言?
Go 语言到底适合干什么?
go语言学习-接口赋值的两种类型
【Go语言入门系列】(九)写这些就是为了搞懂怎么用接口
浅谈golang中的接口
Go语言学习3----Go语言特色
Go语言发展历史、核心、特性及学习路线
兄弟连golang神技(1)-关于 Go 语言的介绍

[关闭]
~ ~