Avatar ·

如何在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`也发生了变化,尽管我将结果赋给了新变量。这很奇怪。请解释一下,谢谢。