通过切片创建新的切片
切片之所以被称为切片,是因为创建一个新的切片,也就是把底层数组切出一部分。通过切片创建新切片的语法如下:
slice[i:j]
slice[i:j:k]
其中 i 表示从 slice 的第几个元素开始切,j 控制切片的长度(j-i),k 控制切片的容量(k-i),如果没有给定 k,则表示切到底层数组的最尾部。下面是几种常见的简写形式:
slice[i:] // 从 i 切到最尾部
slice[:j] // 从最开头切到 j(不包含 j)
slice[:] // 从头切到尾,等价于复制整个 slice
让我们通过下面的例子来理解通过切片创建新的切片的本质:
// 创建一个整型切片
// 其长度和容量都是 5 个元素
num := []int{1, 2, 3, 4, 5}
// 创建一个新切片
// 其长度为 2 个元素,容量为 4 个元素
myNum := slice[1:3]
执行上面的代码后,我们有了两个切片,它们共享同一段底层数组,但通过不同的切片会看到底层数组的不同部分:
注意:截取新切片时的原则是 "左含右不含"。所以 myNum 是从 num 的 index=1 处开始截取,截取到 index=3 的前一个元素,也就是不包index=3 这个元素。
所以,新的 myNum 是由 num 中的第2个元素、第3个元素组成的新的切片构,长度为 2,容量为 4。切片 num 能够看到底层数组全部 5 个元素的容量,而 myNum 能看到的底层数组的容量只有 4 个元素。num 无法访问到底层数组的第一个元素。所以,对 myNum 来说,那个元素就是不存在的。
-
数据结构
+关注
关注
3文章
573浏览量
40824 -
数组
+关注
关注
1文章
420浏览量
26786 -
切片
+关注
关注
1文章
23浏览量
8569
发布评论请先 登录
Mapr报告的切片多于设备中存在的切片
如何通过report_utiliztion获得切片比率?
如何使用DSP切片设计?
什么是网络切片技术_网络切片技术的应用

新型高端电容切片制样方式:氩离子研磨抛光/离子研磨CP

网络切片的分类 网络切片粒度如何选择
5G 网络切片之OTN切片和FlexE切片区别
如何实现端到端网络切片?

数组中如何增加切片的容量

什么是5G切片技术,如何完成端到端的网络切片

评论