1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
// append() 从中间下标i插入元素
aslice = []int{1, 2, 3, 4, 5}
i := 3 // 下标 i
newElement := 10 // 新的元素
/*
拆解步骤:
1. appen(a, b):追加b元素到一个a切片
2. 为了实现从中间添加,把原来的分为两部分:
第一部分是 下标 i 前面的 记为 a
第二部分是 下标 i 后面的
3. 第二部分 再使用 appen() 和 下标 i 的元素 组成 一个新的切片 记为 b
4. 将 第一部分 a 和 新的切片 b 组成 数组 c
*/
a := aslice[:i] // 第一部分 a
b := append([]int{newElement}, aslice[i:]...)
c := append(a, b...)
fmt.Println("原来的切片:", aslice) // 原来的数组: [1 2 3 4 5]
fmt.Println("新的切片", c) // 新的数组 [1 2 3 10 4 5]
// 简写为一个
newSlice := append(aslice[:i], append([]int{newElement}, aslice[i:]...)...)
fmt.Println("简写:", newSlice) // 简写: [1 2 3 10 4 5]
fmt.Println("固定格式为:append(切片[:下标], append(新的元素, 切片[下标:]...)...)")
// 案例: 在切片aa []int{24,21,325,208,2370,32,65,321} 索引 index 为 5 处 新增一个切片bb []int{1,2,3}
aa := []int{24, 21, 325, 208, 2370, 32, 65, 321}
index := 5
bb := []int{1, 2, 3}
aa = append(aa[:index], append(bb, aa[index:]...)...)
fmt.Println(aa) // [24 21 325 208 2370 1 2 3 32 65 321]
|