假设我有以下长度为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)
),切片的底层数组必须改变——我们看到,当numSlice的cap
现在翻了一番,len现在是4时,情况就是这样.
很抱歉解释得太繁琐了,我只是简单介绍一下,但是有人能向我解释一下底层数组在幕后发生了什么,以及如何获得对新数组的引用吗?