为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 将 slice 附加到 slice 的 slice 上,那么 slice 会一直影响

Golang 将 slice 附加到 slice 的 slice 上,那么 slice 会一直影响

Go
人到中年有点甜 2022-06-27 16:50:45
今天我得到了这个代码: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]]那么为什么结果会受到影响呢?找不到任何原因,让我很困惑,谢谢你的回答!
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超3个赞

好吧,result没有直接影响,而是combination(或者更确切地说,它的底层数组)。

你“切片”combination得到combination2. 它们的底层数组是相同的。

现在,当您执行附加操作时,您基本上会说“在这个切片结束后我想要元素0”。通过这样做,您还将第一个切片的最后一个元素更改为0

看看这个例子: https: //play.golang.org/p/m0bPJDj9kHs

copy()PS您可以通过使用操作来防止这种情况。


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号