深拷贝是指两个变量,如果其内部引用其他的地址,那么深拷贝会将其内部的指针所指向的值重新分配地址用于存储这个值,因此他们内部的一些引用指针会变化。

浅拷贝是指两个变量,实际上其内部引用部分的地址并没有变化。

常见的浅拷贝,像slice的赋值,map的赋值

1
2
s := []int{123}
s1 = s

如上所示,s1实际上就是对s的浅拷贝

对于深拷贝,我们在代码里应该这么使用

1
2
3
s := []int{123}
var s1 []int
copy(s, &s1)