1.3.1 数组和切片基础

  1. Go语言中的数组长度不可变,在特定场景中这样的集合就不太适用,因此,使用提供了一种更灵活,更强悍的内置类型Slices(切片)

  2. 切片的长度是不固定的,可以追加元素,在追加时,可能使切片容量增多

  3. 切片中有两个概念:

    1. 长度:len 已被赋过值的最大下标+1,可通过len()函数获取

    2. 容量:cap 切片目前可容纳的元素个数,可通过cap()函数获得

  4. 切片是引用类型,因此在传递切片时将引用同一指针,修改切片的值会影响使用该切片的其他对象

  5. 切片是对数组的一个连续”片段“的引用,这个片段可以是整个数组,也可以是由起始和终止索引标识的一些项的子集

  6. 注意:终止索引表示的项目不包括在切片内

  7. 切片的内部结构包含地址、大小、和容量。切片一般用于快速操作一个数据集合

  8. 切片结构体有三部分组成:

    1. pointer是指向一个数组的指针

    2. len代表当前切片的长度

    3. cap是当前切片的容量

    cap长度 >= len长度

  9. 切片默认指向一段连续内存区域,可以是数组,也可以是切片本身。从连续内存区域生成切片是常见的操作,格式如下:

    slice[开会位置:结束位置]

    备注:

    1. slice:表示目标切片对象

    2. 开始位置:对应目标切片对象的索引

    3. 结束为止:对应目标切片的结束索引

  10. 切片的创建有以下四种方式:

    1. make([]Type, length, capacity)

    2. make([]Type, length)

    3. []Type{}

    4. []Type{value1, value2, ..., valueN}

Last updated