向切片追加元素
向切片追加元素
为切片追加新的元素是种常用的操作,为此 Go 提供了内建的 append 函数。内建函数的 文档 对此函数有详细的介绍。 func append(s []T, vs ...T) []T
append 的第一个参数 s 是一个元素类型为 T 的切片,其余类型为 T 的值将会追加到该切片的末尾。
append 的结果是一个包含原切片所有元素加上新添加元素的切片。
当 s 的底层数组太小,不足以容纳所有给定的值时,它就会分配一个更大的数组。返回的切片会指向这个新分配的数组。
(要了解关于切片的更多内容,请阅读文章 Go 切片:用法和本质 。)
package main import "fmt" func main() { var s []int printSlice(s) // 添加一个空切片 s = append(s, 0) printSlice(s) // 这个切片会按需增长 s = append(s, 1) printSlice(s) // 可以一次性添加多个元素 s = append(s, 2, 3, 4) printSlice(s) } func printSlice(s []int) { fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s) }
25
1 package
main 2 3 import
"fmt" 4 5 func
main () { 6
var
s [] int 7
printSlice ( s ) 8 9
// 添加一个空切片 10
s
=
append ( s , 0 ) 11
printSlice ( s ) 12 13
// 这个切片会按需增长 14
s
=
append ( s , 1 ) 15
printSlice ( s ) 16 17
// 可以一次性添加多个元素 18
s
=
append ( s , 2 , 3 , 4 ) 19
printSlice ( s ) 20 } 21 22 func
printSlice ( s [] int ) { 23
fmt . Printf ( "len=%d cap=%d %v\n" , len ( s ), cap ( s ), s ) 24 } 25