golang数据深拷贝
golang对slice的深拷贝
使用append拷贝
Array := append([]int32{},array...)
使用copy拷贝
Array := make([]int32,len(array))
copy(Array, array)
golang对map深拷贝
valueMap := make(map[string][]int)
slice := []int{1,2,3}
valueMap["qq"] = slice
newMap := make(map[string][]int)
for k, v := range valueMap {
    newMap[k] = append([]int{},v...)
}
golang对任意数据深拷贝
大佬GitHub地址:
https://github.com/huandu/go-clone
拷贝任意值(无法处理循环链表)
v := clone.Clone(t).(*T)
拷贝循环链表
node := Slowly(node1).(*ListNode)
注意(性能)
MacBook Pro (15-inch, 2019)
Processor: 2.6 GHz Intel Core i7
go 1.15.8
goos: darwin
goarch: amd64
pkg: github.com/huandu/go-clone
BenchmarkSimpleClone-12          8325153               137 ns/op              32 B/op          1 allocs/op
BenchmarkComplexClone-12          540330              2190 ns/op            1488 B/op         24 allocs/op
BenchmarkUnwrap-12              12075483                96.8 ns/op             0 B/op          0 allocs/op
BenchmarkSimpleWrap-12           3233422               373 ns/op              80 B/op          2 allocs/op
BenchmarkComplexWrap-12           757730              1498 ns/op             752 B/op         16 allocs/op
                
              golang数据深拷贝
      https://www.inktea.eu.org/2021/22462.html