文章目录
- 问题描述
- 解答
- 李培冠博客
问题描述 【Golang|golang 拷贝大切片一定比小切片代价大吗】拷贝大切片一定比小切片代价大吗?
解答 并不是,拷贝所有切片的代价都是一样的。
看一下源码,就很清楚了:
type slice struct {
array unsafe.Pointer
lenint
capint
}
因为切片的底层有三个字段(一个
unsafe.Pointer
,两个 int
)。其中
unsafe.Pointer
指向的是切片底层数组的指针,这是切片的存储空间,第二个字段是切片的长度,第三个字段是切片的容量。将一个切片变量分配给另一个变量只会复制三个机器字,所以拷贝大切片与小切片的代价是一样的。
大切片与小切片的区别无非就是
len
和 cap
这两个值的大小不一样。李培冠博客 欢迎访问我的个人网站:
李培冠博客:lpgit.com
推荐阅读
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- c语言|C语言初期学习遇到的特殊点 【三子棋详解】【初学者福音,详细总结,复习能手】
- Python|Python实战(使用线性回归预测房价)
- IC|数字IC后端真的不如前端设计和验证吗()
- Python|教你写个简单好用的Python脚本一键自动整理文件非常适合办公用~
- python|oeasy教您玩转python - 007 - # 字符本质
- vue.js|后端开发学习Vue(一)
- Go|Docker后端部署详解(Go+Nginx)
- 后台|NATAPP内网穿透通过nginx实现一个端口访问多个不同端口服务