Go微服务实战
上QQ阅读APP看书,第一时间看更新

3.2 slice

3.2.1 结构定义

slice(切片)是一个拥有相同类型元素的可变长序列,且slice的定义与数组的定义非常像,它就是没有长度的数组。

对于slice的结构体,reflect.SliceHeader的定义如下:


type SliceHeader struct {
    Data uintptr
    Len int
    Cap int
}

可以看到,slice有三个属性:指针、长度和容量。指针指向slice开始访问的第一个元素;长度是切片的长度;容量是指从slice开始访问的第一个元素到底层数组最后一个元素的元素个数。slice的长度不可以超过slice的容量。

说明

切片的底层是数组,Go语言的切片对应着底层数组,一个底层数组可以对应多个slice。