参考答案
结论:切片是引用类型,底层为包含指针、长度、容量的结构体。原理:运行时表示为reflect.SliceHeader,含Data(unsafe.Pointer指向底层数组首地址)、Len(int)、Cap(int)。切片本身不存储数据,仅描述底层数组的一段连续内存。创建方式:make([]T,len,cap)会分配底层数组并初始化切片头;数组切片s[a:b]生成新切片,Data指向原数组索引a,Len=b-a,Cap=原Cap-a,共享底层数组。多个切片可指向同一数组,修改元素会互相影响;append扩容后可能指向新数组。