Avatar ·

如何在 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"] — 很奇怪,对吧? ``` 原切片也发生了变化,并且最后一个元素出现了重复!为什么会这样?如何正确地从切片中删除元素,以避免