go语言学习笔记:接口定义与实现

定义:

package main

import (
    "fmt"
)

type bird interface{                 //接口定义关键字
    Fly()                            //与方法不同,它没有func
    Sing()
}


type eagle struct {                  //与C++等语言不同,它不需要明确定义基础自哪个接口。

}

func (e *eagle) Fly() {              
    fmt.Println("eagle fly")
}

func (e *eagle) Sing() {
    fmt.Println("eagle sing")
}

func main(){
    e :=eagle{}
    var b bird
    b = &e                                //需要实现接口的所有方法才能这样转换
    b.Fly()
    b.Sing()
}

与C++等语言不同,go无需明确指出继承自哪些接口。这样做有好处也有坏处,好处是它是松耦合;坏处是阅读代码时不明确它的继承关系

go语言接口中不能有变量定义,其实就是纯虚接口。

C++分为接口和纯虚接口,那么是否支持想C++那样的普通接口呢?

func (b bird) Sing() {
    fmt.Println("i am a bird")
}
在以上代码中加入这样的实现会提示不支持。所以go只支持纯虚接口。

 

posted @ 2017-12-01 10:01  你的KPI完成了吗  阅读(84)  评论(0)    收藏  举报