给定一个结构体A和它的方法
type A struct{}
func (a *A) Print() {
fmt.Println("aaa")
}
func (a *A) CallPrint() {
a.Print()
}
我们现在需要另外一个结构体B,我们希望让B重写A的Print方法
type B struct{ A }
func (b *B) Print() {
fmt.Println("bbb")
}
此时我们开始调用B的两个方法,一个是直接调用Print,一个是间接调用CallPrint
func main() {
var b B
b.CallPrint()
b.Print()
}
可以看到这里直接调用的情况会重写方法,但是间接调用的时候,还是使用原来的方法