为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中编写一个函数来处理两种类型的输入数据

如何在golang中编写一个函数来处理两种类型的输入数据

Go
HUH函数 2023-06-26 15:35:00
我有多个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)

}

还有其他方法可以使用这里提到的接口和吸气剂,但在我看来这是最简单的方法


查看完整回答
反对 回复 2023-06-26
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信