点子工场
当前位置:首页 - 历史 >

go语言——复合函数(二)

2019-10-03来源:中国讯息网


4slice


4.1 概述


数组的长度在定义之后无法再次修改;数组是值类型,每次传递都将产生一份副本。显然这种数据结构无法完全满足开发者的真实需求。Go语言提供了数组切片(slice)来弥补数组的不足。

 

切片并不是数组或数组指针,它通过内部指针和相关属性引⽤数组⽚段,以实现变⻓⽅案

 

slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层arrayslice的声明也可以像array一样,只是不需要长度。

 

4.2 切片的创建和初始化


slice和数组的区别:声明数组时,方括号内写明了数组的长度或使用...自动计算长度,而声明slice时,方括号内没有任何字符。


注意make只能创建slicemapchannel,并且返回一个有初始值(非零)

 

4.3 切片的操作


4.3.1 切片截取


操作

含义

s[n]

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

s[:]

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

s[low:]

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

s[:high]

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

s[low:high]

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

s[low:high:max]

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

len(s)

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

cap(s)

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

 

示例说明:


 

操作

结果

len

cap

说明

array[:6:8]

[0 1 2 3 4 5]

6

8

省略 low

array[5:]

[5 6 7 8 9]

5

5

省略 high max

array[:3]

[0 1 2]

3

10

省略 high max

array[:]

[0 1 2 3 4 5 6 7 8 9]

10

10

全部省略


4.3.2 切片和底层数组关系


 

4.3.3 内建函数


1) append


append函数向 slice 尾部添加数据,返回新的slice 对象:



append函数会智能地底层数组的容量增长,一旦超过原底层数组容量,通常以2倍容量重新分配底层数组,并复制原来的数据:



2) copy


函数 copy 在两个 slice 间复制数据,复制⻓度以len 小的为准,两个 slice 可指向同⼀底层数组。

 


4.4 切片做函数参数









熊市中的小傲娇——加密货币借贷业务在熊市中崛起


麻省理工学院技术评论:区块链将在2019年回归正常


热烈庆祝拓朴区块链大学第一期学员顺利结业


转载文章地址:http://www.daisysquiltshoppe.com/lishi/17295.html
(本文来自点子工场整合文章:http://www.daisysquiltshoppe.com)未经允许,不得转载!
标签:
网站简介 联系我们 网站申明 网站地图

版权所有:www.daisysquiltshoppe.com ©2017 点子工场

点子工场提供的所有内容均是网络转载或网友提供,本站仅提供内容展示服务,不承认任何法律责任。