240 发简信
IP属地:湖南
  • @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...