Go语言中的接口是为了解决多态性而设计的。
接口的实现主要包括:
一、接口定义
接口使用type定义,类似结构体。
type interface_name interface {
method_name1 [return_type]
method_name2 [return_type]
// ...
}
接口只指定方法签名,而没有方法体。
二、接口实现
一个类型如果实现了接口指定的所有方法,那么这个类型就实现了这个接口。
type Dog struct {
name string
}
func (d Dog) Speak() {
fmt.Println("汪汪叫!")
}
func (d Dog) Run() {
fmt.Println("狗狗在跑...")
}
Dog 实现了 Speak() 和 Run() 两方法,所以实现了 Animal 接口。
三、接口值
接口变量可以保存具体类型的指针。
var a Animal
a = Dog{"大黄"}
四、类型断言
可以使用类型断言获取接口底层的具体类型。
dog := a.(Dog)
dog.name
总的来说,Go语言接口的实现包括:
- 接口定义 – 指定方法签名
- 具体类型实现接口 – 实现接口方法
- 接口变量 – 可以保存不同类型
- 类型断言 – 获取具体类型
这种设计实现了 Go语言的多态性。它是 Go面向对象的主要手段。