gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:20:29 24 4
gpt4 key购买 nike

今天我得到了这段代码:


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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com