原切片 经过分割后传给其他参数,为什么自身的值也会发生改变?
来源: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 是同一个数组的视图,对切片的修改实际上是对它们共同的数组的修改
00 -
慕数据3065326
2019-08-09
在切片扩容前,切片都是对原切面的引用, append(tmp[:2],tmp[3:]…)将456接到了12后面
00