起因
append函数可以在一个slice尾部插入元素,某天写了这么一句代码append([]int{1},nums),其中nums是一个slice,但是这么写是错误的,因为append第二个参数应该是一个参数,单这里传入了一个slice。于是研究了一下这个问题
解决方案
将其改成append([]int{1},nums...)即可,差别仅仅是nums后面多了...这样就代表传入的是多个元素而不是一个slice,但是这样其实是把nums打散成多个元素然后挨个插入第一个slice中,不知道会不会对性能造成影响。之后测试后再补充
...的用法
目前总结出的...用法有两种: 1.放在参数后面,代表不定数量的参数 2.放在slice后面,代表将slice打散进行传递
一种高效的插入元素操作
当想在slice的一个特定位置插入元素时,golang没有官方方法,这里记录一种较为高效的插入方法
s = append(s, zero_value)
copy(s[i+1:], s[i:])
s[i] = x