首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >戈朗把切片附加到切片,那么切片总是会影响切片的吗?

戈朗把切片附加到切片,那么切片总是会影响切片的吗?
EN

Stack Overflow用户
提问于 2020-09-12 23:42:42
回答 1查看 805关注 0票数 0

今天我得到了这个密码:

代码语言:javascript
复制
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)

}

产出显示:

代码语言:javascript
复制
[[1 2 3 4 5]]
[[1 2 3 4 0]]

那么为什么结果会受到影响呢?我找不到任何理由,这让我很困惑,谢谢你的回答!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-13 00:04:49

嗯,result没有受到直接影响,但是combination (或者更确切地说,是它的底层数组)。

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

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

查看下面的示例:https://play.golang.org/p/m0bPJDj9kHs

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63865861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档