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只支持纯虚接口。

浙公网安备 33010602011771号