简析使用索引区间得到的切片
目录
在Go语言中,可以通过索引来获取切片(slice)中的特定区间的元素。切片是一个动态数组,它提供了一种方便的方式来操作一组数据。使用索引区间可以获取切片中一段连续的元素,这在很多情况下都非常有用。
定义
基本语法
|
|
startIndex
是起始索引(包含)。endIndex
是结束索引(不包含)。
注意事项
- 起始索引和结束索引必须在切片的有效索引范围内。
- 如果省略
startIndex
,则默认为 0。 - 如果省略
endIndex
,则默认为切片的长度(包含最后一个元素)。 - 如果
startIndex
大于endIndex
,则返回一个空切片。 - 使用索引区间得到的切片与原始切片共享底层数组。
示例
|
|
在这个示例中,我们首先创建了一个原始切片 originalSlice
,然后使用索引区间来获取不同的切片。可以看到,通过不同的索引区间我们可以得到原始切片的不同子集。
需要注意的是,对通过索引区间得到的切片的修改会影响到原始切片。
切片的容量
|
|
由于索引区间得到的切片与原始切片共享底层数组,所以在底层数组中,切片 slicedData 后面的位置的值还是原来的值,只是我们不能通过 slicedData 切片直接访问,但切片的容量为索引的起始位置到底层数组的最后一个元素的个数。
在上面的例子中,originalSlice 的长度为 10,slicedData 切片对原切片进行截取,索引从 1 到 5(不包含),也就是 [2 3 4 5],但切片 slicedData 的长度 9(索引 1 到索引 9 (包含))。