Go append 函数
最后修改时间 2024 年 4 月 11 日
Go append 函数教程描述了 append
函数以及如何使用它。
append
是一个内置函数,用于将元素追加到切片的末尾。如有必要,会自动为新元素分配额外的空间。
append
函数返回更新后的切片。因此,有必要将 append 的结果存储起来,通常存储在持有切片本身的变量中。
Go append 简单示例
append
是一个可变参数函数;它可以接受可变数量的参数。
package main import "fmt" func main() { vals := []int{} vals = append(vals, 1) vals = append(vals, 2, 3) vals = append(vals, 4, 5, 6) vals = append(vals, 7, 8, 9, 10) fmt.Println(vals) }
在本例中,我们创建了一个整数切片。我们从一个空切片开始。然后我们继续使用 append
添加新元素。
vals = append(vals, 1) vals = append(vals, 2, 3)
可以将一个或多个元素添加到切片中。该函数创建一个新的更新后的切片,然后将其重新赋值给 vals
变量。
$ go run main.go [1 2 3 4 5 6 7 8 9 10]
Go append 切片
我们可以将另一个切片追加到另一个切片。
package main import "fmt" func main() { vals := []int{1, 2, 3} res := []int{-1, 0} res = append(res, vals...) fmt.Println(res) }
在本例中,我们将 vals
的值追加到 res
。
res = append(res, vals...)
我们使用了省略号运算符。...
会解包 vals
切片的值。
$ go run main.go [-1 0 1 2 3]
Go append 字节
append
函数还允许追加字节值。
package main import "fmt" func main() { bytes := append([]byte("old "), "falcon"...) fmt.Println(bytes) fmt.Println(string(bytes)) }
在本例中,我们使用 append
向字节切片添加新字节。
$ go run main.go [111 108 100 32 102 97 108 99 111 110] old falcon
复制元素
在下一个示例中,我们使用 append
复制元素。
package main import "fmt" func main() { a := []int{1, 2, 3, 4} b := []int{} b = append(b, a...) fmt.Println(a) fmt.Println(b) }
a
切片中的元素被复制到 b
切片中。
a := []int{1, 2, 3, 4}
我们有一个整数切片。
b := []int{}
创建了一个新的空切片。
b = append(b, a...)
省略号运算符解包 a
的所有值,并使用 append
将它们插入到空的 b
中。
$ go run main.go [1 2 3 4] [1 2 3 4]
删除元素
删除实际上是创建了一个不包含指定元素的新切片。
package main import "fmt" func main() { a := []int{1, 2, 3, 4, 5} b := []int{1, 2, 3, 4, 5} i := 3 j := 0 a = append(a[:i], a[i+1:]...) fmt.Println(a) b = append(b[:j], b[j+1:]...) fmt.Println(b) }
我们删除了第一个和第四个元素。
a = append(a[:i], a[i+1:]...)
在索引操作中,第一个索引(冒号之前)是包含的,第二个索引是不包含的。
$ go run main.go [1 2 3 5] [2 3 4 5]
Pop 操作
Pop 操作会移除最后一个元素并返回它。
package main import "fmt" func main() { a := []int{1, 2, 3, 4, 5} i := len(a) - 1 var x int x, a = a[i], a[:i] fmt.Println(x) fmt.Println(a) }
在本例中,我们将最后一个整数从切片中移除,并将其返回到 x
变量中。
$ go run main.go 5 [1 2 3 4]
在元素前添加
Prepend 操作将一个元素插入到切片的开头。
package main import "fmt" func main() { a := []int{1, 2, 3, 4, 5} e := 0 a = append([]int{e}, a...) fmt.Println(a) }
我们创建一个包含我们想要前置的值的新切片,并将现有 a
切片的所有元素追加到它上面。
$ go run main.go [0 1 2 3 4 5]
插入元素
在下一个示例中,我们将一个新元素插入到切片中。
package main import "fmt" func main() { a := []int{1, 2, 4, 5} i := 2 e := 3 a = append(a[:i], append([]int{e}, a[i:]...)...) fmt.Println(a) }
将新值 3 插入到 a
切片中。我们使用了两次 append
函数。
来源
在本文中,我们展示了如何使用 append
内置函数。