如何在 Golang 中从切片 (slice) 中删除元素?正确方法与陷阱
大家好!我刚开始学习 Go,在处理切片时遇到了问题。我需要从切片中按索引删除一个元素,但找不到内置函数。
以下是我的代码示例:
```go
package main
import "fmt"
func main() {
fruits := []string{"apple", "banana", "cherry", "date"}
// 想删除 "banana" (索引 1)
// 如何正确操作?
fmt.Println(fruits)
}
```
我尝试过直接将元素赋值为 nil,但这并没有从切片中删除它,只是将值清零:
```go
fruits[1] = "" // 不能作为删除操作
```
然后我尝试用切片操作去掉目标元素,但这创建了一个新切片,而原切片仍然存在:
```go
newFruits := append(fruits[:1], fruits[2:]...)
// 现在 fruits = ["apple", "cherry", "date", "date"] — 很奇怪,对吧?
```
原切片也发生了变化,并且最后一个元素出现了重复!为什么会这样?如何正确地从切片中删除元素,以避免