接口
什么是鸭子类型
go语言的处处是interface,到处是鸭子类型
当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来像鸭子、那么这只鸟就是鸭子。
接口的定义
package main
import "fmt"
// 声明一个duck接口
type Duck interface {
gagaga()
wale()
swimming()
}
// 声明一个pskDuck 结构体
type pskDuck struct {
}
// pskDuck 结构体去实现接口Duck的gagaga方法
func (pd *pskDuck) gagaga() {
fmt.Println("gagagagaga")
}
// pskDuck 结构体去实现接口Duck的gagaga方法
func (pd *pskDuck) wale() {
fmt.Println("wale")
}
// pskDuck 结构体去实现接口Duck的swimming方法
func (pd *pskDuck) swimming() {
fmt.Println("swimming")
}
func main() {
var d Duck = &pskDuck{}
d.gagaga()
}
//输出
gagagagaga
假设我们注释掉 swimming 这个实现方法,则会报错,因为使用接口必须得实例化他的所有方法。
以上例子就是 duck为鸭子接口类型。 psk类似可达鸭,他叫起来像duck(实现了duck的gagaga),看也像鸭子(实现了wale),游泳起来像鸭子(实现了swiming)。所以他是duck鸭子
实际编程会大量使用接口,有助于代码的解耦。
接口可以没有任何方法,这样就可以把struct赋值给他,任何类型都可以往里面放。
接口定义完要实现。
多接口的实现。
文档更新时间: 2023-07-15 01:40 作者:young