我正在将旧的Java项目重写为Go。
我已经在工作中做了一些Go语言,但是我不知道如何将OOP(带有抽象类等)转换为Go语言。
在这个想法中,我有两种类型(很快3)具有相同的方法,但是其他一些类型(最多只有1或2种)应该具有相同的签名,但不具有相同的主体。
我知道Go没有某种继承。现在我有这样的东西:
type A struct {...}
func (a *A) M1 (){ stuff1 }
func (a *A) M2 (){ stuff2 }
func (a *A) SM (){ special stuff A }
然后:
type B struct {...}
func (b *B) M1 (){ stuff1 }
func (b *B) M2 (){ stuff2 }
func (b *B) SM (){ special stuff B }
我不知道Go如何管理这个问题。在Java中,我做了一个抽象类,然后用我的两个具体类实现了它。
我想要的不是不必复制M1()和M2(),而是能够具有泛型类型来调用这些方法,然后只需为这两种类型定义SM()。