Go 方法调用时,浅拷贝 和 深拷贝 (看类型)(引用类型、值类型) :
- 浅拷贝 (可以视为对象指针) 浅拷贝是指对地址的拷贝 浅拷贝的是数据地址,只复制指向的对象的指针, 此时新对象和老对象指向的内存地址是一样的,新对象值修改时老对象也会变化 (其实没有新老对象,就是同一个)。
引用类型的都是浅拷贝:slice、map、function (+ 指针) (注意:slice 是浅拷贝、array 是神拷贝)
- 深拷贝 深拷贝是指将地址指向的值进行拷贝
深拷贝的是数据本身,创造一个一样的新对象,新创建的对象与原对象不共享内存, 新创建的对象在内存中开辟一个新的内存地址,新对象值修改时不会影响原对象值。
值类似的都是深拷贝:int、float、bool、array、struct (看到没有,struct 、array 都在这里。)