向切片追加元素

程序员成长之旅 · 程序员成长之旅/Go语言学习/笔记 · 374 字

向切片追加元素

为切片追加新的元素是种常用的操作,为此 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