golang中的append函数一般都是尾部插入,例如
var res [][]int
sum:=[]int{2}
res=append(res,sum)
如果要让他在头部插入呢?
var res [][]int
sum:=[]int{2}
res=append([][]int{sum},res...)
解释如下
- 首先append第一维度肯定要保持和等号左边一样的二维切片,否则他是没办法插入的,具体可以看append函数的源码
- 因此我们需要自己构造一个二维切片放入我们要头插的内容,当然二维要放入的内容肯定是一维一维放入的,这点要对应
- 第二个参数则是我们原来的二维切片,这里有…,目前总结出的…用法有两种: 1.放在参数后面,代表不定数量的参数 2.放在slice后面,代表将slice打散进行传递,例如
res=[[1,2],[3,4],[5,6]]
res...=[1,2] [3,4] [5,6]
是不是很神奇,他们被打散成一维了,这样就能和我们之前尾部插入时候传入的一维保持一致了,这样就可以成功前插了。
对应力扣107. 二叉树的层次遍历 II,今天刷题一次遇到append前插的办法,故在此记录一下,方便以后阅读。