美文网首页
golang面试题:拷贝大切片一定比小切片代价大吗?

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

作者: 9號 | 来源:发表于2020-06-01 08:56 被阅读0次
默认文件1590972322350.png

问题

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

怎么答

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

解释

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

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

相关文章

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

    问题 拷贝大切片一定比小切片代价大吗? 怎么答 并不是,所有切片的大小相同;三个字段(一个 uintptr,两个i...

  • ArcGIS 切片服务无法访问到切片,Server Manage

    一、报错内容 从切片服务器拷贝的切片包,在本地ArcGIS Server启动服务后无法加载切片,切片图标为灰色。 ...

  • the way to go:练习7.11和练习7.12

    golang学习,切片操作。 运行结果

  • Golang:切片

    切片(slice)是建立在数组之上的更方便,更灵活,更强大的数据结构。切片并不存储任何元素而只是对现有数组的引用。...

  • golang切片

    定义 slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案。 使用方式 切片:切...

  • golang切片

    切片是对数组的抽象 slice 总是指向底层的一个 array。 slice 是一个指向 array 的指针,这是...

  • Golang:切片

    切片 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。非常灵活,支持自动扩...

  • golang 切片

    清空切片

  • Go-Slice

    golang 切片(Slice) 切片为引用类型,切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基...

  • golang-101-hacks(13)——二维切片

    注:本文是对golang-101-hacks中文翻译。Go支持多维切片,再此只对二维切片切片做介绍。日常生活中通常...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/kxcjzhtx.html