golang 拷贝大切片必定比小切片代价大吗

问题描述

拷贝大切片必定比小切片代价大吗?git

解答

并非,拷贝全部切片的代价都是同样的。数组

看一下源码,就很清楚了:网站

type slice struct {
	array unsafe.Pointer
	len   int
	cap   int
}

由于切片的底层有三个字段(一个 unsafe.Pointer,两个 int)。指针

其中 unsafe.Pointer 指向的是切片底层数组的指针,这是切片的存储空间,第二个字段是切片的长度,第三个字段是切片的容量。code

将一个切片变量分配给另外一个变量只会复制三个机器字,因此拷贝大切片与小切片的代价是同样的。get

大切片与小切片的区别无非就是 lencap 这两个值的大小不同。源码

李培冠博客

欢迎访问个人我的网站:博客

李培冠博客:lpgit.comit

相关文章
相关标签/搜索