Go语言接口

接口是面向对象的必备属性之一,即便是像C语言这种面向过程的语言也可以通过指向函数的指针来实现接口。我们熟知的面向对象语言中更是少不了接口。最近闲了下来,又可以开始学习Go语言了,发现Go语言的接口吸收了各种语言的优点,也考虑到了很多面向对象语言的不足。

如果我使用的Java在创建一个借口的时,我会如何做呢?

1 public interface TestInterface {
2     public int getNumber(int num1, int num2);
3 }

然后是这个接口的实现类:

1 class Test1 implements TestInterface {
2     public int getNumber(int num1, int num2) {
3         return num1+num2;
4     }
5 }

这样的做法在使用的时候必然会出现如下代码:

TestInterface test = new Test1();

那么在Go语言中是这样实现的:

1 type TestInterface interface {
2     getNumber(num1 int, num2 int) int
3 }

然后写这个接口的实现类:

1 type Test struct {
2 }
3 
4 func (t *Test) getNumber(num1 int, num2 int) int {
5     return num1 + num2
6 }

这样同样new一个实现类的时候可以这么做:

1 var test1 TestInterface = new(Test)
2 fmt.Println(test1.getNumber(1, 2))

这种类型的接口和Java中接口的显著差别在于这个接口在实现的时候并没有做继承一类的工作,在Go语言中,一个类只需要实现了接口要求的所有函数,就可以说这个类实现了这个接口,哪怕这个实现类还加上了其他函数,也不影响他是一个实现类。

posted @ 2016-12-09 12:03  小马甲奶糖  阅读(284)  评论(0编辑  收藏  举报