go - Golang将slice append 到slice的slice上,那么slice会一直影响slice的slice吗?

标签 go append slice

今天我得到了这段代码:


import "fmt"

func main() {
    var results [][]int
    combination := []int{1, 2, 3, 4, 5}
    results = append(results, combination)
    fmt.Println(results)

    combination2 := combination[:len(combination)-1]
    combination2 = append(combination2, 0)
    fmt.Println(results)

}

输出显示:
[[1 2 3 4 5]]
[[1 2 3 4 0]]
那么为什么结果受到影响?我找不到任何原因,这让我很困惑,谢谢您的回答!

最佳答案

好吧,result不会受到直接影响,但是combination会受到影响(或者更确切地说,是其基础数组)。
您“ slice ” combination以获得combination2。它们的底层数组是相同的。
现在,当您执行追加操作时,您基本上会说“在此 slice 结束后,我需要元素0”。这样,您还可以将第一个 slice 的最后一个元素更改为0
看看这个例子:https://play.golang.org/p/m0bPJDj9kHs
附言您可以通过使用copy()操作来防止这种情况。

关于go - Golang将slice append 到slice的slice上,那么slice会一直影响slice的slice吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63865861/

相关文章:

json - golang 从 json 字符串中获取 key 的有效方法/lib,并使用此 key 执行 geoip,然后将 geoip 信息添加到 json

amazon-web-services - 无法以编程方式调用 AWS lambda

ruby - Ruby 中用于 append 内容的 << 运算符是什么?

batch-file - 批处理 : How to append string in FOR loop

java - 在 GUI 中逐项显示数组列表

python - Numpy:通过多维数组对多维数组进行排序

python - 如何将切片对象的负索引解析为 argparse.ArgumentParser

xml - 编码 XML 时可选 "omitempty"?

go - 未搜索 Html 模板文件

python - 创建一个函数,该函数接受以字符串形式给出的方程并计算它