浅拷贝
复制原来切片的地址,修改切片的时候,仍然是操作原来切片(注意,增删操作实际上是分配新的切片,不是操作原来的切片的地址)
a := []int{1, 2, 3}
b := a[:] // 看似复制的操作,实际是浅拷贝
c := a[1:] // 即使分割切片也是浅拷贝
return a // 返回值同样是浅拷贝
如果我们需要在函数中返回值,但是不希望用户修改原来的空间,则需要使用深拷贝
浅拷贝
复制原来对象的内容
a := []int{1, 2, 3}
b := make([]int, len(a)) // 这里一定要提前分配空间,如果写成 var b []int是不会拷贝成功的
copy(b, a)