要删除某切片中符合条件的元素,如果在遍历切片时删除,会引发恐慌,可以使用下面的方法。
比如切片是 从1到9的数字,要删除其中可以整除3的数字,也就是3、6、9
func f() {
slice := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
k := 0
for _, n := range slice {
if n%3 != 0 { // filter
slice[k] = n
k++
}
}
slice = slice[:k]
fmt.Println(slice) //[1 2 4 5 7 8]
}