go语言学习 - 切片扩容、增加、插入、删除

golang

切片增加

使用append方法可以给切片后面追加数据,返回新切片;

容量够追加

如果一个切片数据,足够容纳追加的数据,那么不会新开辟内存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main

import "fmt"

func main() {
// make函数创建切片make(类型,长度,容量)
var slice = make([]int, 5, 10)
s1 := append(slice, 2, 3)
fmt.Println(slice)
fmt.Println(s1)
// 修改第二个数据
s1[1] = 111

// [0 111 0 0 0]
fmt.Println(slice)
// [0 111 0 0 0 2 3]
fmt.Println(s1)

}

容量不够追加

切片容量不够追加,会创建新变量并2倍扩容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main

import "fmt"

func main() {
var slice = make([]int, 5, 10)

s1 := append(slice, 2, 3, 4, 5, 6, 7)

s1[1] = 111
// 【0 0 0 0 0】
fmt.Println(slice)
// [0 111 0 0 0 555 3 4 5 6 7]
fmt.Println(s1)

}

img

切片插入

利于切片方法和append可以实现从切片中插入数据

1
2
3
4
5
6
7
8
9
10
11
package main

import "fmt"

func main() {
// 在特定位置插入 233
d := []int{11, 22, 33, 44, 55}
d = append(d[:2], append([]int{233}, d[2:]...)...)
fmt.Println(d)
}

切片删除

1
2
3
4
5
6
7
8
9
10
11
package main

import "fmt"

func main() {
// 删 33
c := []int{11, 22, 33, 44, 55}
c = append(c[:2], c[2+1:]...)
fmt.Println(c)
}