Golang语言社区-【基础知识】切片

时间:2022-05-05
本文章向大家介绍Golang语言社区-【基础知识】切片,主要内容包括定义切片、len() 和 cap() 函数、Nil 切片、子切片、append() 和 copy() 函数、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

Go编程切片是一种抽象了Go编程数组。由于Go编程数组允许您定义的变量,可容纳同类的几个数据项类型,但它不提供任何内置的方法来动态地增加它的大小或得到一个子数组自身。切片覆盖这一限制。它提供了数组所需的多种效用函数,被广泛应用在Go编程。

定义切片

要定义一个切片,你可以声明它作为一个数组时,不需要指定大小或使用make函数来创建。

var numbers []int /* a slice of unspecified size */
/* numbers == []int{0,0,0,0,0}*/
numbers = make([]int,5,5) /* a slice of length 5 and capacity 5*/

len() 和 cap() 函数

由于切片是一种抽象数组。它实际上使用数组作为底层structure.len()函数返回的元素呈现在cap()函数返回切片作为多少元素,它可以容纳的容量的切片。以下为例子来解释片的使用:

当上述代码被编译和执行时,它产生了以下结果:

len=3 cap=5 slice=[0 0 0]

Nil 切片

如果一个切片,没有输入默认声明,它被初始化为为nil。其长度和容量都为零。下面是一个例子:

子切片

切片允许设置下限和上限进行指定,以得到它使用的子片[下限:上限]。下面是一个例子:

当上述代码被编译和执行时,它产生了以下结果:

len=9 cap=9 slice=[0 1 2 3 4 5 6 7 8]
numbers == [0 1 2 3 4 5 6 7 8]
numbers[1:4] == [1 2 3]
numbers[:3] == [0 1 2]
numbers[4:] == [4 5 6 7 8]
len=0 cap=5 slice=[]
len=2 cap=9 slice=[0 1]
len=3 cap=7 slice=[2 3 4]

append() 和 copy() 函数

Slice允许增加使用切片的append()函数。使用copy()函数,源切片的内容复制到目标切片。下面是一个例子:

当上述代码被编译和执行时,它产生了以下结果:

len=0 cap=0 slice=[]
len=1 cap=2 slice=[0]
len=2 cap=2 slice=[0 1]
len=5 cap=8 slice=[0 1 2 3 4]
len=5 cap=16 slice=[0 1 2 3 4]