如何在Golang中从slice删除元素:正确方法
大家好!我刚开始学习Go,在处理slice时遇到了问题。我需要按索引删除元素,但找不到内置函数来实现。在Python中,我习惯用`list.pop()`或`del list[i]`,但Go中没有这样的功能。
以下是我尝试过的代码:
```go
package main
import "fmt"
func main() {
fruits := []string{"apple", "banana", "cherry", "date"}
// 想删除"banana"(索引1)
// 尝试直接赋值为nil - 不行
// fruits[1] = nil // 编译错误
// 尝试用slice操作,但结果有问题
result := append(fruits[:1], fruits[2:]...)
fmt.Println(result) // 输出:[apple cherry date]
fmt.Println(fruits) // 输出:[apple cherry date date] - 有bug!
// 为什么原slice变了?如何正确删除?
}
```
我注意到执行`append`后,原slice `fruits`也发生了变化,尽管我将结果赋给了新变量。这很奇怪。请解释一下,谢谢。