数组和切片
- 不同长度数组为不同类型,无法比较
- 切片的数据结构
type Slice struct {
Data unsafe.Pointer
Len int
Cap int
}
- 新 slice 和老 slice 共用底层数组,新老 slice 对底层数组的更改都会影响到彼此。基于数组创建的新 slice 也是同样的效果:对数组或 slice 元素做的更改都会影响到彼此。 值得注意的是,新老 slice 或者新 slice 老数组互相影响的前提是两者共用底层数组,如果因 为执行 append 操作使得新 slice 或老 slice 底层数组扩容,移动到了新的位置,两者就不会相互影 响了。
- 切片扩容,old容量小于1024个,new容量为old的2倍(预估容量)
- 切片扩容,old容量大于1024个,new容量为old的1.25倍(预估容量)
- STEP1:预估容量
- STEP2:newCap需要多少内存
- STEP3:匹配合格内存规格
举例说明: