上篇中,咱们讲到了在Go语言中如何定义方法,今天,咱们将进一步深刻Go语言的面向对象编程。java
首先来看一个最基本的接口:编程
和定义一个结构体相似,只不过将struct换成了interface,而后声明了两个函数:draw()和count()。就这么简单,一个接口就定义好了,那么如何实现接口呢?在java中咱们会让一个类去实现接口,在实现的时候必须用implements关键字显示声明去实现,如:函数
class myshow implements show{...}spa
在Go语言中,不须要这么作,咱们要作的只是去实现接口声明的全部函数就能够了,以下所示,就实现show这个接口:对象
上面代码,咱们的osArgs结构体实现了文章开头给出的show这个接口。其实就是用到上一篇的内容,给osArgs结构体定义了两个方法,而这两个方法就是接口定义的两个函数,只是咱们具体完成了这两个函数具体要作的功能。这不就是接口的功能么,你能够定义不少个结构体,分别实现show接口,使得它实现不一样的功能。可是Go语言的接口实现不须要显示去声明实现了某个接口如上面的show,由于颇有可能在另一个地方,有一个show2的接口,它也是定义了draw()和count()函数。因此,你其实也是实现了show2这个接口,这彷佛很是灵活,自由。这里不会讲它如何如何好,或者如何如何很差,哈哈哈,由于......反正对于初学者来讲,目前只须要懂得如何用就行了,等深刻后再去探讨“好坏”的问题会更好。最后,看如何具体使用上面的接口:继承
要想这个例子正常编译运行,记得导入os包哦。接口
如Go语言没有继承,而使用组合的方式来实现相似功能,其实接口也是,不像java或其它语言一个继承接口,而是组合一个接口,咱们简单的改写前面的代码:
咱们将以前的接口show改为首字母大写,还记得吧,这样就能够被外部包调用,并且把以前show接口的draw函数分离出一个Drawer接口,在Draw后加上er是由于在Go语言中习惯上,单一成员的接口的名称是其成员名加-er。而后在Show接口中组合Drawer接口,如上代码所示。编译
本篇接口就写到这里,在下一篇中将看到更多关于Go接口的相关内容。面向对象编程