我在 golang
中有一个结构如下
type Test struct {
prop *int
}
当 prop
是指向零值的指针时,我想对结构对象进行深层复制。真正的结构中有更多字段,我想要整个结构对象的深层复制。我尝试使用 gob
编码解码方式,但由于提到的设计结果,它会将指向 0 的指针转换为 nil 指针 here .我也尝试使用 reflect.Copy
但它因错误 panic: reflect: call of reflect.Copy on struct Value
而 panic 。有没有更好的方法来深度复制此类结构对象?
编辑:
我尝试使用 json
编码/解码,它有点奏效。但我不知道它的缺点。
func DeepCopy(a, b interface{}) {
byt, _ := json.Marshal(a)
json.Unmarshal(byt, b)
}
对这个解决方案有什么意见吗?
最佳答案
https://play.golang.org/p/fVKW62BYDm
我用了https://github.com/mohae/deepcopy/blob/master/deepcopy.go例如。 reflect.Copy 仅适用于 slice 或数组。 如您所见,使用反射是正确的方法,但它比简单地调用 reflect.Copy 更复杂。还有一些其他包实现了深拷贝,但我对这些包没有任何经验。
关于pointers - 在 golang 中具有指向 0 值的指针的深度复制结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45857095/