Go语言中的深拷贝和浅拷贝是指对象之间的复制方式,它们的主要区别在于是否真正获取(复制)对象实体,而不是引用。
深拷贝会创建一个新的对象,新对象与原对象不共享内存,新对象在内存中开辟一个新的内存地址,新对象值修改时不会影响原对象值。
浅拷贝只复制指向的对象的指针,此时新对象和老对象指向的内存地址是一样的,新对象值修改时老对象也会变化。在释放内存地址时,深拷贝会分别释放内存地址,而浅拷贝则会同时释放内存地址。
例如,如下gin框架中的Context的深度拷贝:
Go语言中的深拷贝和浅拷贝是指对象之间的复制方式,它们的主要区别在于是否真正获取(复制)对象实体,而不是引用。
深拷贝会创建一个新的对象,新对象与原对象不共享内存,新对象在内存中开辟一个新的内存地址,新对象值修改时不会影响原对象值。
浅拷贝只复制指向的对象的指针,此时新对象和老对象指向的内存地址是一样的,新对象值修改时老对象也会变化。在释放内存地址时,深拷贝会分别释放内存地址,而浅拷贝则会同时释放内存地址。
例如,如下gin框架中的Context的深度拷贝: