【发布时间】:2016-08-10 22:48:27
【问题描述】:
假设我有以下长度为 3 的整数数组:
nums := [3]int{1,2,3}
然后我只抓取前两项的切片
numSlice := nums[:2]
在 numSlice 和 nums 上调用 cap 在这两种情况下都会产生 3,len 会分别产生 2 和 3。
如果我随后附加到该切片 (numSlice = append(numSlice, 10)),则底层数组 (nums) 现在是 [1 2 10]。 cap 对于两者都保持在 3,因为切片的底层数组是相同的,切片的 len 现在是 3。
但是,如果我再次附加到该切片 (numSlice = append(numSlice, 20)),则切片的底层数组必须更改 - 我们看到 cap 现在 numSlice 翻倍并且 len 现在是 4 时就是这种情况。
很抱歉解释过度,只是让我自己通过它,但是有人可以向我解释底层数组的底层发生了什么以及如何获取对新数组的引用?
【问题讨论】: