golang切片长度与容量指的是什么(golang,编程语言)

时间:2024-05-03 22:05:17 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    golang%E5%88%87%E7%89%87%E9%95%BF%E5%BA%A6%E4%B8%8E%E5%AE%B9%E9%87%8F%E6%8C%87%E7%9A%84%E6%98%AF%E4%BB%80%E4%B9%88

在golang中,切片长度就是切片中元素的数量;切片容量是从创建切片的索引开始的底层数组中元素的数量,即从切片的第一个元素开始数,到其底层数组元素末尾的个数。切片的长度与容量是可以计算的,内置方法len()可获取长度,cap()可获取容量;在使用切片的过程中,如果使用append()让切片的长度大于了切片的容量,那么切片的容量会以双倍的形式自动扩容。

Go 语言 的 切片 拥有长度和容量。

切片的长度是切片中元素的数量

切片的容量是从创建切片的索引开始的底层数组中元素的数量,即从它的第一个元素开始数,到其底层数组元素末尾的个数。

切片是可索引的,并且可以由len()方法获取长度,切片提供了计算容量的方法cap(),可以测量切片最长可以达到多少。我们在使用切片的过程中,如果使用 append 使切片的长度大于了切片的容量,那么切片的容量会以双倍的形式自动扩容。

切片实际的是获取数组的某一部分,len切片<=cap切片<=len数组

cap()的结果决定了切片截取的注意细节

运行结果:

由此可以看到,在初始时,切片长度为0,在添加元素后,实际长度为6

证明数组是值类型,切片是引用类型的例子:

运行结果:

从运行结果可以看到,z的改变影响到了y的值,说明切片是引用类型。

slice没有自己的任何数据,它只是底层数组的一个引用,对slice所做的任何修改都将反映在底层数组中数组是值类型,而切片是引用类型

运行结果:

由结果我们可以看到,切片的截取只能生成切片,如果内容不够截取,会从底层数组给出后面的值。如果长度不够,会报错。

判断一个切片是否为空,如果直接使用nil来判断,是不准确的。

Golang允许len为0但是cap不为0,或者两者都为的0的切片,所以一般通过len获取切片长度来判断是否为空切片,而不是直接将切片和nil做直接的比较。

本文:golang切片长度与容量指的是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:go语言中字符串如何遍历下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18