在Go語言中,接口是一種抽象類型,它定義了一組方法,但不實(shí)現(xiàn)它們。接口可以被其他接口繼承,這意味著一個(gè)接口可以包含另一個(gè)接口的所有方法。這種繼承方式稱為組合。
要實(shí)現(xiàn)接口繼承,你需要使用嵌入關(guān)鍵字(embed
)。這里有一個(gè)簡(jiǎn)單的例子來說明如何使用嵌入關(guān)鍵字實(shí)現(xiàn)接口繼承:
package main
import "fmt"
// 定義一個(gè)接口A
type InterfaceA interface {
MethodA()
}
// 定義一個(gè)接口B,嵌入接口A
type InterfaceB interface {
InterfaceA
MethodB()
}
// 定義一個(gè)結(jié)構(gòu)體,實(shí)現(xiàn)接口A和接口B的方法
type MyStruct struct{}
func (s MyStruct) MethodA() {
fmt.Println("MethodA")
}
func (s MyStruct) MethodB() {
fmt.Println("MethodB")
}
func main() {
var b InterfaceB = MyStruct{}
b.MethodA() // 調(diào)用接口A的方法
b.MethodB() // 調(diào)用接口B的方法
}
在這個(gè)例子中,我們定義了兩個(gè)接口InterfaceA
和InterfaceB
。InterfaceB
嵌入了InterfaceA
,這意味著InterfaceB
繼承了InterfaceA
的所有方法。然后,我們定義了一個(gè)結(jié)構(gòu)體MyStruct
,它實(shí)現(xiàn)了InterfaceA
和InterfaceB
的所有方法。最后,在main
函數(shù)中,我們創(chuàng)建了一個(gè)InterfaceB
類型的變量b
,并將MyStruct
實(shí)例賦值給它。這樣,我們就可以調(diào)用b
的方法,這些方法分別屬于InterfaceA
和InterfaceB
。