1、slices的数据结构
slice的底层确实引用一个数组对象。一个slice由三个部分构成:指针、长度和容量。
指针指向该slice的第一个元素在底层数组元素的地址(或者说是在内存中的地址),
长度对应slice中元素的数目;长度不能超过容量,
容量一般是从slice的开始位置到底层数据的结尾位置。内置的len和cap函数分别返回slice的长度和容量。
多个slice之间可以共享底层的数据,并且引用的数组部分区间可能重叠
其他任何对slices所做的操作最终都会反馈到它的底层数组上,因为slice值包含指向第一个slice元素的指针,因此向函数传递slice将允许在函数内部修改底层数组的元素。换句话说,复制一个slice(或者执行切片操作)只是对底层的数组创建了一个新的slice别名,对其中任何1个slices所做的操作会反馈(影响)到其他slices