我有多个struct共享一些字段。例如,type A struct { Color string Mass float // ... other properties}type B struct { Color string Mass float // ... other properties}我还有一个只处理共享字段的函数,比如说func f(x){ x.Color x.Mass}遇到此类情况如何处理?我知道我们可以将颜色和质量转换为函数,然后我们可以使用接口并将该接口传递给函数f。A但是如果和的类型B无法更改怎么办?我是否必须定义两个具有基本相同实现的函数?
1 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
在 Go 中,您不需要像 Java、C# 等中那样的传统多态性。大多数事情都是使用组合和类型嵌入来完成的。实现此目的的一种简单方法是更改设计并将公共字段分组到单独的结构中。这只是思维方式不同而已。
type Common struct {
Color string
Mass float32
}
type A struct {
Common
// ... other properties
}
type B struct {
Common
// ... other properties
}
func f(x Common){
print(x.Color)
print(x.Mass)
}
//example calls
func main() {
f(Common{})
f(A{}.Common)
f(B{}.Common)
}
还有其他方法可以使用这里提到的接口和吸气剂,但在我看来这是最简单的方法
- 1 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消