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

我有多个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无法更改怎么办?我是否必须定义两个具有基本相同实现的函数?


HUH函数
浏览 86回答 1
1回答

MMTTMM

在 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 callsfunc main() {    f(Common{})    f(A{}.Common)    f(B{}.Common)}还有其他方法可以使用这里提到的接口和吸气剂,但在我看来这是最简单的方法
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go