gpt4 book ai didi

go - 在go中合并两个结构(相同类型)?

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

我有点被困在这里。我想编写一个(通用的,如果可能的话!)函数,它将合并两个相同类型的结构——它可能不仅包含基元,还包含结构,甚至 slice 。

由于业务层面对我们的限制,我们不能真正使用mergo,所以我需要写这个。但是我有点难以获得任何值得讨论的结果 - 我不是在寻找一个完全有效的解决方案(如果你有代码,它肯定会有所帮助)但我真的需要一些关于这个算法可能是什么样子的指导。

我想我想做一些事情:

func Merge(source CustomStruct, target CustomStruct) result CustomStruct{

// Maybe some kind of son work to get my two structs to be strings?

// Iterate the JSON, comparing each field and taking values from source and target (depending on rules), and add them to result...

// recursion for when it contains another struct, or slice?

// return result
}

最佳答案

与产品合作,将您的用例减少到可管理的类型数量,而不是尝试编写可以处理任何可以想象的类型的完全通用的东西。

然后选择其中之一:

  1. 使用模板生成代码,这些模板将按类型填充(高性能),
  2. 具有类型断言的接口(interface)(良好的性能,编写起来有些乏味,但可以使用一个好的编辑器或在这里使用带有模板的代码生成),或者
  3. 反射(reflection)(表现不佳,复杂性更高,可能仍然乏味)

如果您不能将其减少到可管理的类型数量,仍然可以使用反射来解决,但要复杂得多。如果达到这一点,请查看标准库和能够处理任何类型的流行开源包以获取示例/灵感,并注意可能需要大量工作/时间/思想才能完成和彻底测试。

关于go - 在go中合并两个结构(相同类型)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52349447/

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