数组和切片

  • 不同长度数组为不同类型,无法比较
  • 切片的数据结构
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:匹配合格内存规格
  • 举例说明:

results matching ""

    No results matching ""