我想复制数据结构的实例。由于 go 没有任何内置函数,因此我使用第三方库:https://github.com/emirpasic/gods。
例如,我可能会尝试使用带有哈希集的深复制。
var c, d hashset.Set
c = *hashset.New()
c.Add(1)
deepcopy.Copy(d, c)
c.Add(2)
fmt.Println(c.Contains(2))
fmt.Println(d.Contains(2))
fmt.Println(c.Contains(1))
fmt.Println(d.Contains(1))
Run Code Online (Sandbox Code Playgroud)
然而,哈希集的内容根本没有被复制。我知道深层复制模块无法复制未导出的值,但是由于库中没有内置的“复制构造函数”,这是否意味着无法在不修改其代码的情况下使用库完全复制数据结构实例?(我研究过的其他一些库也出现类似的问题)。
我是 golang 新手,感觉不对,因为类似的事情可以很容易地实现,例如在 C++ 中。我知道我可以编写自己的版本或修改他们的代码,但这比预期的工作量太多,这就是为什么我认为应该有一种惯用的方法。
PS:对于那些可能会说“不需要这样的功能”的人,我将一些具有某些数据结构的复杂状态分配给并行计算线程,他们直接使用状态并且不能互相干扰。