首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang面试题:拷贝大切片一定比小切片代价大吗?

golang面试题:拷贝大切片一定比小切片代价大吗?

作者头像
9号同学
发布2021-03-04 15:10:06
7810
发布2021-03-04 15:10:06
举报

问题

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

怎么答

并不是,所有切片的大小相同;三个字段(一个 uintptr,两个int)。切片中的第一个字是指向切片底层数组的指针,这是切片的存储空间,第二个字段是切片的长度,第三个字段是容量。将一个 slice 变量分配给另一个变量只会复制三个机器字。所以 拷贝大切片跟小切片的代价应该是一样的

解释

  • SliceHeader切片在go的底层结构。
type SliceHeader struct {
 Data uintptr
 Len  int
 Cap  int
}
  • 大切片跟小切片的区别无非就是 LenCap的值比小切片的这两个值大一些,如果发生拷贝,本质上就是拷贝上面的三个字段。

如果喜欢我的文章,可关注我的公众号:golang小白成长记

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 golang小白成长记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 怎么答
  • 解释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档