美文网首页
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面试题:拷贝大切片一定比小切片代价大吗?

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