go语言的类型和接口的之间是一对多(或多对一)的关系
以下为概念实例生产理解,便于以后在复杂的类型与接口环境中使用
一,一个类型可以实现多个接口 而接口间彼此独立,不知道对方的实现。
type HandlerInterface interface {
OnRequset()
IsRequestOk() bool
}
type Test2 struct{//...
}
type Test struct{
ID int //普通结构
start()string //接口函数
HandlerInterface //接口函数
Test2 //结构嵌套
}
func NewTest()*Test{//...
return &Test{}
}
func(t *Test)OnRequset{//...
}
func(t *Test)IsRequestOk{//...
}
二,一个接口可以有多个结构实现
一个接口的方法,不一定需要由一个类型完全实现,
接口的方法可以通过在类型中嵌入其他类型或者结构体来实现。
也就是说,使用者并不关心某个接口的方法是通过一个类型完全实现的,
还是通过多个结构嵌入到一个结构体中拼凑起来共同实现的。
//老司机开车 这个接口函数可不是一个结构体完成的
type Car interface {
Start() // 开启
close()string // 关闭
}
// 熄火
type Close struct {//...
}
// 实现Car 的close()方法
func (c *Close) close()string {//...
}
// 人为
type People struct {
Close // 嵌入日志器
}
// 实现Car的Start()方法
func (p *People) Start() {//...
}