笔记来源:《Go 程序设计语言》ISBN:9787111558422 作者:Alan Donovan, Brianv Kernighan
4.1 数组
索引可以按照任意顺序出现
|
|
索引有的时候也可以省略
|
|
数组类型相同(值类型、长度都相同)的数组可以比较是否相等
|
|
Go 把数组和其他的类型都看成值传递
4.2 slice
slice 通常写成 []T
|
|
slice 操作符 s[i:j] 创建了一个新的 slice
- 0 ≤ i ≤ j ≤ cap(s)
- 这个新的 slice 引用了序列 s 中 从 i 到 j - 1 索引位置的所有元素
- s 可以是:数组、指向数组的指针、slice
- 新 slice 的元素个数是 j - i 个
- 如果上面的表达式中省略了 i,那么新 slice 的起始索引位置就是 0
- 如果省略了 j,那么新的 slice 的结束索引位置是 len(s) - 1,即 j = len(s)
- 因此 slicemonths[1:13] 引用了所有有效月份,同样的写法也可以是 slicemonths[1:]
- slicemonth[:] 引用了整个数组
反转数组 gop1.io/ch4/rev
|
|
slice 唯一允许的比较操作是和 nil 比较,例如
|
|
检查一个 slice 是否为空
- 使用 len(s) == 0
- 而不是 s == nil,因为 s != nil 的情况下,slice 也可能是空的
|
|
内置函数 make 创建 slice
- make([]T, len) // 长度和容量相等
- make([]T, len, cap) 和 make([]T, cap)[:len] 功能相同
4.2.1 append 函数
内置函数 append 用来将元素追加到 slice 的后面
|
|
内置 copy 函数用来复制 slice