今天我得到了这个代码: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您可以通过使用操作来防止这种情况。
- 1 回答
- 0 关注
- 184 浏览
添加回答
举报
0/150
提交
取消