【Go】29、go语言切片元素的添加和删除
package main
import "fmt"
func f1() {
// 将切片b的元素添加到切片c之后
// 定义数组
a := [...]int{1, 3, 5, 7, 9}
// 切片
b := a[:2] // 1 3
c := a[3:] // 7 9
fmt.Printf("b: %v\n", b)
fmt.Printf("c: %v\n", c)
c = append(c, b...)
fmt.Printf("c: %v\n", c)
}
func f2() {
// 复制切片a的元素到新的切片b上
var a = []int{1, 2, 4}
b := make([]int, len(a))
copy(b, a)
fmt.Printf("b: %v\n", b)
}
func f3() {
// 删除位于索引i的元素 i=3
var a = []int{2, 4, 6, 8, 10, 12}
a = append(a[:3], a[4:]...)
fmt.Printf("a: %v\n", a)
}
func f4() {
// 切除切片a中从索引i到j位置的元素 2-4
var a = []string{"a", "b", "c", "d", "e", "f", "g", "h"}
a = append(a[:2], a[5:]...)
fmt.Printf("a: %v\n", a)
}
func f5() {
// 在索引i的位置插入元素x i=3 x=100
a := []int{1, 3, 5, 7, 9, 10}
a = append(a[:3], append([]int{100}, a[3:]...)...)
fmt.Printf("a: %v\n", a)
}
func f6() {
// 在索引i的位置插入长度为j的新切片 i = 2 j = 3
a := []int{1, 2, 3, 4, 5}
a = append(a[:2], append(make([]int, 3), a[2:]...)...)
fmt.Printf("a: %v\n", a)
}
func f7() {
// 在索引i的位置插入切片b的所有元素 b = []int{100, 200, 300}
a := []int{1, 2, 3, 4, 5}
a = append(a[:2], append([]int{100, 200, 300}, a[2:]...)...)
fmt.Printf("a: %v\n", a)
}
func f8() {
// 取出位于切片a最末尾的元素x
a := []int{1, 3, 5, 7, 9, 11, 13}
x := a[len(a)-2 : len(a)-1]
fmt.Printf("x: %v\n", x)
}
func f9() {
// 将元素x追加到切片a
a := []int{1, 2, 3, 4, 5}
a = append(a, 10)
fmt.Printf("a: %v\n", a)
}
func main() {
f1()
fmt.Println("========")
f2()
fmt.Println("=========")
f3()
fmt.Println("=========")
f4()
fmt.Println("=========")
f5()
fmt.Println("=========")
f6()
fmt.Println("=========")
f7()
fmt.Println("=========")
f8()
fmt.Println("=========")
f9()
}
# 输出结果:
b: [1 3]
c: [7 9]
c: [7 9 1 3]
========
b: [1 2 4]
=========
a: [2 4 6 10 12]
=========
a: [a b f g h]
=========
a: [1 3 5 100 7 9 10]
=========
a: [1 2 0 0 0 3 4 5]
=========
a: [1 2 100 200 300 3 4 5]
=========
x: [11]
=========
a: [1 2 3 4 5 10]