在切片头部/任意位置插入元素

参考文档: https://blog.csdn.net/austin1000/article/details/117734067

go语言自带的append,只能在切片的末尾加入元素,但如果要在开头加入元素的话,这样写是会报错的

a := []int{1,2}
a := append([]int{1}, a)

因为append的第二个参数只能是元素(可以是不定长元素),而不能是切片。

func append(slice []Type, elems ...Type) []Type

所以得这样写:

a := []int{1,2}
a := append([]int{1}, a...)

还有一种写法更通用,可以在任意位置插入元素,供参考:

a := []int{1,2}
a := append(a, 0)  // 先把原来的切片长度+1
index := 2 // 要把新元素插入到第二个位置
copy(a[index+1:], a[index:])
a[index] = 0 // 新元素的位置是0