@Ovenvan 尝试编码之后发现了其中的差别!虽然是浅显的问题,博主还是耐心解答,非常感谢!
Golang的垂直组合思维——type embedding什么是Golang的正交组合-垂直组合思维:Tony Bai的博客 - Coding in GO way - Orthogonal Composition Go语言通过typ...
@Ovenvan 尝试编码之后发现了其中的差别!虽然是浅显的问题,博主还是耐心解答,非常感谢!
Golang的垂直组合思维——type embedding什么是Golang的正交组合-垂直组合思维:Tony Bai的博客 - Coding in GO way - Orthogonal Composition Go语言通过typ...
//object/creature/creature.go
package creature
import (
"fmt"
"github.com/ovenvan/multi-inheritance/object"
)
type Creature interface {
object.Object
Create()
}
type Crea struct {
object.Obj //struct 中绑定interface和struct的区别?
// Object只实现了一个Obj实例,这个实例的作用是被继承,提供父类的代码,因此应该继承Obj,而非Object
}
func (t *Crea) Create(){
fmt.Println("This is a Base Create Method")
}
func (t *Crea)GetID() uint{ //override
fmt.Println("Override GetID from Creature")
return t.Obj.GetID()
//t.GetID() it is a recursive call
}
为什么在Crea要override GetID()?这样不就达不到减少冗余代码的目的了吗?
注释中的recursive call会产生什么问题?
Golang的垂直组合思维——type embedding什么是Golang的正交组合-垂直组合思维:Tony Bai的博客 - Coding in GO way - Orthogonal Composition Go语言通过typ...