七叶笔记 » golang编程 » golang2021数据格式(23)切片截取

golang2021数据格式(23)切片截取

上一小节中,已经完成了切片的定义,赋值等操作,接下来看一下关于切片的其它操作。首先说一下切片的截取操作,所谓截取就是从切片中获取指定的数据。

       我们通过如下程序给大家解释一下:

      以上程序输出结果:

s[0:3:5]是什么意思呢?

我们可以使用s[low:high:max]来表示

 第一个数(low)表示下标的起点(从该位置开始截取),如果low取值为0表示从第一个元素开始截取,也就是对应的切片s中的10

第二个数(high)表示取到哪结束,也就是下标的终点(不包含该位置),3表示取出下标是0,1,2的数据(10,20,30),不包括下标为3的数据,那么也就是说取出的数据长度是3. 可以根据公式:3-0 计算(len=high-low),也就是第二个数减去第一个数,差就是数据长度。在这里可以将长度理解成取出的数据的个数。

第三个数用来计算容量,所谓容量:是指切片目前可容纳的最多元素个数。通过公式5-0计算(cap=max-low),也就是第三个数据减去第一个数。该案例中容量为5

 

现在将以上程序进行修改:

结果是:

因为起点还是0,终点还是3. 长度是3,容量是5。

 

 继续修改该程序:

结果是:

 

继续修改该程序

slice切片结果是:

那么容量是多少呢?容量为4,通过第三个数减去第一个数(5-1)计算。

通过画图的方式来表示slice切片中的容量。

 

通过上面的图,可以发现切片s经过截取操作以后,将结果赋值给切片slice后,长度是3,容量是4,只不过有一块区域是空闲的。

关于切片的截取还有其它的操作,如下图所示:

操作

含义

s[n]

切片s中索引位置为n的项

s[:]

从切片s的索引位置0到len(s)-1处所获得的切片

s[low:]

从切片s的索引位置low到len(s)-1处所获得的切片

s[:high]

从切片s的索引位置0到high处所获得的切片,len=high

s[low:high]

从切片s的索引位置low到high处所获得的切片,len=high-low

s[low:high:max]

从切片s的索引位置low到high处所获得的切片,len=high-low,cap=max-low

len(s)

切片s的长度,总是<=cap(s)

cap(s)

切片s的容量,总是>=len(s)

 

下面通过一个案例,演示一下:

(1)s[:]

(2)s[low:]

(3)s[:high]

(4) s[low:high]

array[2:5] 表示从下标为2的元素(包含该元素)开始取,到下标为5的元素(不包含该元素)结束。所以切片s5的长度是3。切片s5的容量是多少呢?是8,根据array切片的容量是10, 减去array[2:5]中的2。

以上就是关于切片的基本操作,这些操作在以后的开发过程中会经常用到,希望大家记住基本的规律。

相关文章