package main
import "fmt"
func main() {
paths := []string{"hello", "world", "mars"}
var result = delete(paths, 1)
fmt.Println(result)
fmt.Println(paths)
}
func delete(paths []string, index int) []string {
paths = append(paths[:index], paths[index+1:]...)
return paths
}
上面代码的结果如下:
[你好火星]
[你好火星火星]
如您所见,第二个fmt.Println(paths)显然使用修改后的切片但不使用重新分配的值。这是为什么?我期待它[hello mars]像之前的印刷品一样印刷。
我知道被传递的与函数中的参数期望引用相同的底层数组的paths切片不同。但我仍然不明白我是如何改变传递给function的底层数组而不是.pathsdelete()pathsdelete[hello mars mars][hello world mars]
婷婷同学_
相关分类