删除切片指定索引的元素(避免掉入切片坑)
删除切片指定索引处的元素应该是实际开发中经常遇到的功能
百度或者谷歌得到的答案经常是这样的
nums := []int{1, 2, 3, 4}
k := 2
res := append(nums[:k], nums[k+1:]...)
最后得到的答案确实是
res = [1, 2, 4]
但是,但是,但是...
请注意此时的nums
等于[1, 2, 4, 4]
,感兴趣的可以去运行下
所以,slice
真的要谨慎啊,大兄弟们
我习惯下面这种方式
nums := []int{1, 2, 3, 4}
k := 2
// res := nums[low:hight:max]
// len(res) = hight - low
// cap(res) = max - low
// 默认 max = cap(res)
res := append(nums[:k:k], nums[k+1:]...)
或者这样
nums := []int{1, 2, 3, 4}
k := 2
temp := make([]int, len(nums[:k]))
temp = copy(temp, nums[:k])
res := append(temp, nums[k+1:]...)
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: