golang slice 删除元素
在 Go 语言中,删除 slice 中的元素可以通过多种方式实现。以下是几种常见的方法:
append
函数假设你有一个 slice s
,并且你想删除索引为 i
的元素:
s := []int{1, 2, 3, 4, 5}
i := 2 // 要删除的元素索引
s = append(s[:i], s[i+1:]...)
fmt.Println(s) // 输出: [1 2 4 5]
copy
函数你也可以使用 copy
函数来删除元素:
s := []int{1, 2, 3, 4, 5}
i := 2 // 要删除的元素索引
s = append(s[:i], s[i+1:]...)
fmt.Println(s) // 输出: [1 2 4 5]
如果你不想使用 append
或 copy
,你可以手动移动元素:
s := []int{1, 2, 3, 4, 5}
i := 2 // 要删除的元素索引
for j := i; j < len(s)-1; j++ {
s[j] = s[j+1]
}
s = s[:len(s)-1]
fmt.Println(s) // 输出: [1 2 4 5]
如果你需要删除多个元素,可以创建一个新的 slice 来保留不需要删除的元素:
s := []int{1, 2, 3, 4, 5}
toDelete := map[int]bool{2: true, 4: true} // 要删除的元素索引
newSlice := s[:0] // 使用原 slice 的容量
for i, v := range s {
if !toDelete[i] {
newSlice = append(newSlice, v)
}
}
fmt.Println(newSlice) // 输出: [1 2 4 5]
选择哪种方法取决于你的具体需求和性能考虑。