filter
循环截取法
fori
numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
for i := 0; i < len(numbers); i++ {
if numbers[i]%2 == 0 { // 如果是偶数就删除
// 通过截取删除
numbers = append(numbers[:i], numbers[i+1:]...)
i--
}
}
fmt.Println(numbers) // [1 3 5 7 9]
移位覆盖法
j
numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
j := 0
for _, num := range numbers {
if num%2 == 0 { // 如果是偶数就删除
continue
}
numbers[j] = num
j++
}
fmt.Println(numbers[:j]) // [1 3 5 7 9]
最后,推荐使用第二种方法,性能更好。