gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:19:10 24 4
gpt4 key购买 nike

我有多个 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
}

遇到这种情况怎么办?我知道我们可以将颜色和质量转化为函数,然后我们可以使用接口(interface)并将该接口(interface)传递给函数 f。但是,如果 AB 的类型无法更改怎么办。我是否必须定义两个实现基本相同的函数?

最佳答案

在 Go 中,您不像在 Java、c# 等中那样使用传统的多态性。大多数事情都是使用组合和类型嵌入来完成的。一种简单的方法是更改​​您的设计并将公共(public)字段分组到一个单独的结构中。只是思维方式不同而已。

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)
}

还有其他方法可以使用提到的接口(interface)和 getter here但我认为这是最简单的方法

关于go - 如何在golang中编写一个函数来处理两种类型的输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56588337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com