我有两个具有相同接收器函数实现的结构:
type A struct {
name string
// other fields
}
type B struct {
name string
// other fields
}
type AA struct {
resource A
}
func (a *AA) Get() string {
// process something with a.resource.name
return a.resource.name
}
type BB struct {
resource B
}
func (b *BB) Get() string {
// process something with b.resource.name
return b.resource.name
}
type I interface {
Get() string
}
两个结构
AA
和 BB
有Get
函数,为了满足接口(interface)I
,这可能是一个愚蠢的问题,但我不知道如何简化它们以删除两个 Get
的重复项功能,尝试:A
& B
- 由于无法做到这一点到我使用的系统中的 json 序列化。
AA
在 BB
并调用 AA.Get
- 因为名字在B
里面所以不能工作而不是 A
AA
和 BB
两个字段都像 resourceA
和 resourceB
- 这使 Get
变得复杂函数,此后需要处理AA
和 BB
- 这可以工作,但因为我需要很多字段,而不仅仅是name
, 所以这个函数最终会得到很多参数。 我不能停止觉得应该有一个更简单的方法,并且还尝试/谷歌搜索一种简化它的方法,但它们似乎都不起作用,有人可以给我一些方向或提示吗?
非常感激!
[更新]
我正在尝试创建一个 Kubernetes 运算符(operator),它有一些 CRD(自定义资源定义),并且因为我创建了一个通用 Controller ,它只接受 CRD 并调用它们的函数(这就是我有接口(interface)的原因),但我发现我需要实现完全相同的功能,如
GetName
, GetObject
,或一些操作数据并返回结果的函数,它们在这些 CRD 结构中都是相同的。
最佳答案
我决定只创建一个接受所需参数的函数,并在结构中重用该函数,感谢所有评论。
如果您有其他建议,请随时发表评论或建议,谢谢!
关于go - 具有相同接收器函数实现的两个结构,如何删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62390560/