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() {//...
}