这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
一、本堂课重点内容
本堂课的知识要点有哪些?
- Go语言切片
二、详细知识点介绍
本堂课介绍了哪些知识点?
Go语言切片
-
Go语言中的切片就是长度可变,容量固定的相同类型元素的集合。
-
切片元素类型可以是Go语言任何合法的数据类型,包括复合数据类型。
-
切片声明可以使用
var关键字,也可以使用短变量声明操作符,也可以使用内置函数。切片声明格式如下:格式1 var slice []type 格式2 var slice = []type{value1,value2,value3,...,valueN} 格式3 slice := []type{value1,value2,value3,...,valueN} 格式4 var slice = make([]type,length) 格式5 qw := make([]string,100) 格式6 var slice = make([]type,length,capacity) 格式7 slice := make([]type,length,capacity) -
要声明指定长度及容量的切片,必须使用
make函数。 -
切片为引用类型,声明后必须初始化,切片的零值为
nil。 -
make函数创建的切片已经初始化完毕,其零值为元素类型的零值。 -
内置函数
make用于创建切片、映射及通道。当用于创建一个切片时,它会创建一个隐藏的初始化为零值的数组,然后返回一个引用该隐藏数组的切片。 -
切片与数组一样,通过带方括号及下标索引来检索元素,不同的是,数组的检索范围是整个数组,而切片的检索范围是其长度值,而不是整个切片容量。
-
切片的操作:
语法 含义 s[n]切片 s中索引位置为n的项s[n:m]从切片 s的索引位置n到m-1处所获得的切片s[n:]从切片 s的索引位置n到len(s)-1处所获得的切片s[:m]从切片 s的索引位置0到m-1处所获得的切片s[:]从切片 s的索引位置0到len(s)-1处所获得的切片cap(s)切片 s的容量,cap(s)总是大于len(s)len(s)切片 s的长度,len(s)总是小于cap(s)s[:cap(s)]如果 len(s)<cap(s),增加s的长度到其容量 -
遍历切片和遍历字符串及数组相似,可以采用普通的
for循环来完成。for循环多用来修改某些元素值,如果不修改,可以使用后面的range循环。 -
append函数的基本作用是为切片追加元素,使得原切片长度增加。如果长度还没达到切片的容量,则切片容量不会增加。当切片长度已等于其容量时继续增加元素,则会导致切片扩容,扩容大小取决于原来切片的容量。 -
切片也可以使用内置函数
copy来复制,实现快速创建切片。其使用语法格式如下:n = copy(s1,s2) -
内置的
copy函数接受两个包含相同类型元素的切片作为参数,函数的功能是将第二个切片(源切片s2)复制到第一个切片(目标切片s1)中去,并返回复制元素的数量n。 -
当
copy函数第一个参数为[]byte类型的切片时,第二个切片(源切片)可以是[]byte类型,也可以是string类型。 -
利用内置函数
append及切片的操作语法很容易实现切片增删改。