爱生活爱技术
记录编程学习笔记
© 爱生活爱技术

【4】Golang中切片的使用

切片可以理解为动态的数组,可以按需求自动增长或者是缩小,无疑比数组更加灵活多变,首先看下图。

爱生活爱技术

上图中,有3个字段,分别是指向底层数组的指针、切片访问的元素的长度和切片允许增长的元素个数(即容量)。如果当后面的表示0的格子满了,底层的数组就会更换。

 

切片的创建

1.使用内置的make函数创建

使用make时,需要指定切片的类型、长度与容量大小。

 

2.容量小于长度将会报错。

 

3.通过初始化赋值的方式创建切片

这种方式创建,初始的长度与容量会根据初始化提供的元素个数确定,即时满容的。内置函数 len() 和 cap() 可以直接获得切片的长度和容量属性。

 

4.使用索引声明切片

01,02字符串分别初始化第4和3个元素。


 

nil与空切片

在声明时不做任何的初始化,即创建一个nil切片。


 

切片的使用

1.赋值

如同对数组的索引指向的元素赋值一样。

 

2.使用切片来创建切片

 

当我们有了两个切片,实际上它们共享了同一段底层数组,如图。对于s1我们能知道它的全部容量,但是之后s2就是中间到切片末尾的长度。

爱生活爱技术

起始值和结束值都是可选的。

 

3.长度和容量的计算

对于底层数组容量是k的切片s1[i:j]来说

长度:j-i

容量:k-i

举例:容量是5的切片s1[1:3]

长度:3-1=2

容量:5-1=4


 

切片增长

1.append向切片增加元素

 

2.切片追加

前面说了切片是动态的,可以进行增长。若底层数组扩容了,append操作完成后,会拥有一个全新的底层数组。

 

在切片的容量小于1000个元素时,总会成倍的增加容量。一旦超过1000,容量每次增长25%。

 

3.使用3个索引创建切片

 

我们可以用之前定义的公式,对于s1[2:3:4]就是s1[i:j:k]

长度:j-i=3-2-1

容量:k-i=4-2=2


 

切片的遍历

1.for的形式

 

2.range形式

 

爱生活爱技术-版权所有丨内容声明:未特别注明来源地址均为博主原创内容,转载请详细说明!本文链接地址:http://www.xioaxin12.xyz/1087.html
599 浏览数            
2018-12-19
关键字:
暂无评论

发表评论

湘ICP备18000625号-1
爱生活爱技术

湘公网安备 43011102001008号