package main
import "fmt"
type IA interface {
A()
B()
}
type AbsA struct {
IA
}
type CA struct {
AbsA
}
func (a CA) B() {
fmt.Println("Show B")
}
func (a AbsA) A() {
fmt.Println("Show A")
a.B()
}
func t7() {
var a IA
a = CA{}
a.A()
}
func main() {
t7()
}
运行这个会得到一个 nil 指针 panic,因为当AbsA调用 时B(),它会使用内嵌的IA,但是IA是一个接口。
有什么办法可以使这项工作?
编辑
我尝试做一个抽象的超类,AbsA只实现了接口的一部分,但是需要用到其他的函数,A是AbsA的子类,只实现了接口的其余部分。
但这看起来很糟糕,有没有其他方法可以做到这一点?实际上,我只是想做这样的事情
func (a IA)A(){
fmt.Println("Show A")
a.B()
}
但是 go 不能使用接口作为接收器。
POPMUISE
相关分类