type Swallow struct{//这是燕子,他可以满足是动物也是鸟的特征,所以我们需要实现这两个接口,实现接口的方法就是将其中的接口方法具体实现。这里用到了结构体方法
Name string}type Sparrow struct{//这是麻雀
Name string}funcShowAnimalFeature(a Animal){//这里传入一个动物的接口,我们知道动物的接口有Live方法,直接调用起来
a.Live()}funcShowBirdFeature(a Bird){//这里传入一个鸟类接口,我们知道鸟类的接口有Live和Fly方法,直接调用起来
a.Live()
a.Fly()}func(self *Swallow)Live(){//实现Animal的接口
fmt.Println("I can live.----"+ self.Name)}func(self *Swallow)Fly(){
fmt.Println("I can fly.----"+ self.Name)}func(self *Sparrow)Live(){//实现Animal的接口
fmt.Println("I can live.----"+ self.Name)}func(self *Sparrow)Fly(){
fmt.Println("I can fly.----"+ self.Name)}
在main函数中初始化两种鸟类各一只,然后调用特征方法。
funcmain(){var s Swallow
s.Name ="燕子"ShowAnimalFeature(&s)ShowBirdFeature(&s)var f Sparrow
f.Name ="麻雀"ShowAnimalFeature(&f)ShowBirdFeature(&f)}
运行结果如下:
I can live.----燕子
I can live.----燕子
I can fly.----燕子
I can live.----麻雀
I can live.----麻雀
I can fly.----麻雀