Go语言append()函数的用法(附带实例)
append() 函数也是 Go 语言的内置函数,用于向切片添加元素。
实例演示 append() 函数的使用方法。
【实例 1】把 0~9 添加到切片中。分别声明一个 int 类型的切片和变量;使用 for 循环把 0~9 依次赋值给变量 i;把变量 i 的值依次添加到切片中;并打印切片。代码如下:
下面对实例 1 进行修改,演示向切片添加元素是如何改变切片的长度和容量的。
【实例 2】改变切片的长度和容量。向切片依次添加 0~9,每添加一个元素,先格式化输出切片的长度和容量,再打印切片。代码如下:
实例演示 append() 函数的使用方法。
【实例 1】把 0~9 添加到切片中。分别声明一个 int 类型的切片和变量;使用 for 循环把 0~9 依次赋值给变量 i;把变量 i 的值依次添加到切片中;并打印切片。代码如下:
package main import "fmt" func main() { var numbers []int // 声明 int 类型的切片 numbers var i int // 声明 int 类型的变量 i for i = 0; i < 10; i++ { // 使用 for 循环把 0~9 依次赋值给变量 i // 把 0~9 依次添加到切片 numbers 中 numbers = append(numbers, i) } fmt.Println(numbers) // 打印切片 numbers }运行结果如下:
[0 1 2 3 4 5 6 7 8 9]每次向切片添加元素都应检测切片是否有足够的容量以容纳新元素。如果切片的容量不足,那么切片就会自动扩展容量。也就是说,切片自动扩展容量后,切片的长度也随之发生变化。
下面对实例 1 进行修改,演示向切片添加元素是如何改变切片的长度和容量的。
【实例 2】改变切片的长度和容量。向切片依次添加 0~9,每添加一个元素,先格式化输出切片的长度和容量,再打印切片。代码如下:
package main import "fmt" func main() { var numbers []int // 声明 int 类型的切片 numbers var i int // 声明 int 类型的变量 i for i = 0; i < 10; i++ { // 使用 for 循环把 0~9 依次赋值给变量 i // 把 0~9 依次添加到切片中 numbers = append(numbers, i) //格式化输出切片的长度、切片的容量 fmt.Printf("len: %d cap: %d ", len(numbers), cap(numbers)) //输出添加元素后的切片 numbers fmt.Println("slice:", numbers) } }运行结果如下:
len:1 cap:1 slice:[0] len:2 cap:2 slice:[0 1] len:3 cap:4 slice:[0 1 2] len:4 cap:4 slice:[0 1 2 3] len:5 cap:8 slice:[0 1 2 3 4] len:6 cap:8 slice:[0 1 2 3 4 5] len:7 cap:8 slice:[0 1 2 3 4 5 6] len:8 cap:8 slice:[0 1 2 3 4 5 6 7] len:9 cap:16 slice:[0 1 2 3 4 5 6 7 8] len:10 cap:16 slice:[0 1 2 3 4 5 6 7 8 9]从上述运行结果能够总结出切片自动扩展容量的规律:按原有容量的两倍进行扩展。