golang是可以实现继承的,但是这种继承并不是严格意义上的继承,golang并不支持继承特性,因而也没有单继承,多继承,重写方法等复杂概念。

下面通过一些例子来讲解golang的继承

组合继承

(1)匿名继承

  

解释输出结果:

t.ShowA() 输出:showA\nshowB。 调用showA时,因为Teacher没有ShowA()的方法,此时又匿名继承了People,所以会调到People实现的ShowA方法去

t.People.ShowA() 输出:showA\nshowB。 匿名继承时指定调用的结构体方法,这时候一定会调用People上的ShowA方法,如果People没有该方法会编译报错

t.ShowB() 输出:eacher showB。 因为Teacher本身有实现ShowB方法,所以会调用到 Teacher的ShowB方法。

t.People.ShowB() 输出:showB。 此时如果我们想调用People的ShowB方法只能时通过指定结构体的方法。

(2)有名继承

  

输出结果解释:

 

未完待续。。。