我正在将一个旧的 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() 即可。
莫回无
宝慕林4294392
相关分类