原切片 经过分割后传给其他参数,为什么自身的值也会发生改变?

来源:3-3 切片的操作

慕仔8185830

2019-08-06

如题:var tmp = []int{1,2,3,4,5,6}
tmp2 := append(tmp[:2],tmp[3:]…)
fmt.Println(tmp2)
fmt.Println(tmp)
打印出的结果是
[1 2 4 5 6]
[1 2 4 5 6 6]
这是因为什么呢?

写回答

2回答

hen_nam

2022-01-07

切片 tmp 和 tmp2 是同一个数组的视图,对切片的修改实际上是对它们共同的数组的修改

0
0

慕数据3065326

2019-08-09

在切片扩容前,切片都是对原切面的引用, append(tmp[:2],tmp[3:]…)将456接到了12后面


0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程