zoukankan      html  css  js  c++  java
  • 【Golang基础总结】数组和切片的比较

    1、容量是否可伸缩。数组的容量不可伸缩,切片的容量可以伸缩。

    2、是否可以进行比较。数组对于相同类型相同维度相同长度是可以比较的,而切片只能跟nil进行比较。

    3、作为函数参数时,数组一般传入指向数组的指针,但是可以将切片作为参数传入函数,不是说数组不能作为入参,只是为了节省开销。

    在函数间传递数组是一个开销很大的操作。在函数之间传递变量时,总是以值的方式传递的。如果整个变量是一个数组,意味着整个数组,不管有多长,都会完整复制,并传递给函数。所以一个更好且更有效的方法是可以只传入指向数组的指针,这样只需要复制8个字节的数据。

    在64位架构的机器上,一个切片需要24字节的内存:指针字段需要8字节,长度和容量字段分别需要8字节。由于与切片关联的数据包含在底层数组里,不属于切片本身,所以将切片复制到任意函数的时候,对底层数组大小都不会影响。复制时只会复制切片本身,不会涉及底层数组。

  • 相关阅读:
    p3201&bzoj1483 梦幻布丁
    p1341 无序字母对
    p2590&bzoj1036 树的统计
    p1462 通往奥格瑞玛的道路
    p1522 牛的旅行 Cow Tours
    ARC097D Equals
    p2371&bzoj2118 墨墨的等式
    ARC097C K-th Substring
    欧拉函数入门合集(模板)
    主席树
  • 原文地址:https://www.cnblogs.com/LydiammZuo/p/11877289.html
Copyright © 2011-2022 走看看