import("fmt""github.com/mohae/deepcopy") funcmain(){varm1 =make(map[string]int)m1["age"] =10 // 深拷贝mapcpy := deepcopy.Copy(m1)m2 := cpy.(map[string]int) // 修改m2的值m2["age"] =12 fmt.Printf("m1: %v\n", m1)// m1
注意:上述代码中的deepCopy函数是一个通用的深拷贝函数,它不仅可以处理map类型,还可以处理切片和指针类型。然而,为了简化示例,deepCopyMap函数直接调用了deepCopy函数来处理复杂的值类型。在实际应用中,你可能需要根据具体的需求对deepCopy函数进行进一步的优化和扩展。
2、深拷贝map package mainimport ( "fmt" "github.com/mohae/deepcopy")func main() { var m1 = make(map[string]int) m1["age"] = 10 // 深拷贝map cpy := deepcopy.Copy(m1) m2 := cpy.(map[string]int) // 修改m2的值 m2["age"] = 12 fmt.Printf("m1: %v\n", m1) // m1: ...
https://github.com/antlabs/deepcopy 作用 deepcopy.Copy 主要用于两个类型间的深度拷贝[从零实现] feature 支持异构结构体拷贝, dst 和 src 可以是不同的类型,会拷贝 dst 和 src 交集的部分 多类型支持 struct/map/slice/array/int...int64/uint...uint64/ 等等 性能相比 json 序列化和反序列化的做法,...
2.拷贝 map 3.简化业务代码开发 性能压测 Installation go get github.com/antlabs/pcopy Quick start package main import ( “fmt” “github.com/antlabs/pcopy” ) type dst struct { ID int Result string } type src struct{ ID int Text string ...
map都是 【指针持有者类型】 他们都是复合类型,内部实现中有一个单独的data 指针指向数据存储的地址,...
2、深拷贝map package mainimport ("fmt""github.com/mohae/deepcopy")func main() {var m1 = make(map[string]int)m1["age"] = 10// 深拷贝mapcpy := deepcopy.Copy(m1)m2 := cpy.(map[string]int)// 修改m2的值m2["age"] = 12fmt.Printf("m1: %v\n", m1)// m1: map[age:10]fmt...
在Go语言中,深拷贝(deep copy)和浅拷贝(shallow copy)是关于数据复制的两个概念。 浅拷贝是指对于一个数据结构,只复制其引用(地址),而不复制其实际内容。这意味着新旧两个数据结构共享同一个底层数据,对其中一个进行修改会影响到另一个。在Go语言中,对于大多数的内置类型(如int、string、slice、map、channel等...
mainimport("fmt""github.com/mohae/deepcopy")funcmain(){varm1=make(map[string]int)m1["age"]=10// 深拷贝mapcpy:=deepcopy.Copy(m1)m2:=cpy.(map[string]int)// 修改m2的值m2["age"]=12fmt.Printf("m1: %v\n",m1)// m1: map[age:10]fmt.Printf("m2: %v\n",m2)// m2: map[age...
浅拷贝(Shallow Copy)是指将一个对象的一部分复制到另一个对象中,使用指针来引用原始对象,从而实现对原始对象的部分复制。此时新对象和老对象指向的内存地址是一样的,修改新对象值后老对象值也会变化。引用类型的数据默认是浅拷贝,例如slice和map。 示例代码 ...