拷贝大切片必定比小切片代价大吗?git
并非,拷贝全部切片的代价都是同样的。数组
看一下源码,就很清楚了:网站
type slice struct { array unsafe.Pointer len int cap int }
由于切片的底层有三个字段(一个 unsafe.Pointer
,两个 int
)。指针
其中 unsafe.Pointer
指向的是切片底层数组的指针,这是切片的存储空间,第二个字段是切片的长度,第三个字段是切片的容量。code
将一个切片变量分配给另外一个变量只会复制三个机器字,因此拷贝大切片与小切片的代价是同样的。get
大切片与小切片的区别无非就是 len
和 cap
这两个值的大小不同。源码
欢迎访问个人我的网站:博客
李培冠博客:lpgit.comit