正在回答
1回答
1.capacity的大小可以通过cap(slice)查看
2.已经拿到slice了 就可以对底层的数组进行操作,而不用管他操作的数组是哪一个。
通常情况下 是不会在意操作的数组是哪一个,只管这个切片所对应的数组里的数据是否是准确的
3.数组扩容可以直接通过slice进行操作,具体方法就是使用append(slice,T),在数组len不超过cap的情况下将依然操作同一个数组,超过的情况下就会改变slice底层数组的指针,指向新数组,但里面的元素将被保留
4.由于数组这种结构的特殊性,所有改变数组空间大小的操作其实都是需要在内存中进行重新申请的,这就是你说的生成新数组,append方法如果是对切片操作,只要len不超过cap就不会改变数组的大小,而当len超过cap的时候就会触发数组的扩容机制,这个时候会在内存中重新申请一块更大的数组空间,之后就是对原数组内容的复制,使得数组内容依然是你期望的。
至于cap的扩容大小,从观察来看 是每次扩容之前的2倍大小,如果之前的cap是16,触发扩容后cap将变为32
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星