蜂蛰伤论坛

注册

 

发新话题 回复该主题

golang2021数据格式23切片 [复制链接]

1#
北京较好的荨麻疹医院 https://m-mip.39.net/disease/mip_10490515.html

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

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

以上程序输出结果:

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,只不过有一块区域是空闲的。

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

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

(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。

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

分享 转发
TOP
发新话题 回复该主题