Goappend函数教程介绍了append函数并展示了如何使用它。
append是一个内置函数,它将元素追加到切片的末尾。如有必要,会自动为新元素分配额外的空间。
append函数返回更新后的切片。因此有必要存储追加的结果,通常在保存切片本身的变量中。
$ go version go version go1.18.1 linux/amd64
我们使用Go版本1.18。
去追加简单的例子
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]
去追加切片
我们可以将另一个切片附加到一个切片上。
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]
去追加字节
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]
弹出操作
弹出操作删除最后一个元素并返回它。
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内置函数。
列出所有Go教程。
