数组
初始化
- 指定长度
a := [2]int{1,2} // 指定长度和字面量
- 不指定长度
a := [...]int{1,2} //不指定长度,有后面的列表来确定其长度
- 指定总长度,通过索引初始化, 没有初始化的位置使用默认值
a := [3]int{1:1, 2:3}
- 不指定总长度,通过索引初始化, 最后一个索引为总长度,没有初始化的位置使用默认值
a := [...]int{1:1, 2:3, 5:9}
特点
- 长度固定,不可以追加元素
- 是值类型,赋值或作为函数参数,都是值拷贝
- 数组长度是类型的一部分 [10]int 和 [20]int 是不同类型
- 可以根据数组创建切片
切片
创建切片
-
由数组创建
array[b:e]
array 表示数组名,b表示开始索引,可以不指定,默认是0,
e表示结束索引,可以不指定,默认是数组长度len(array)
array[b:e] 表示创建 e-b 个元素的切片,第一个元素是 array[b],最后一个元素是 array[e-1]
-
由 make 函数创建
// len = 10 cap = 10
a := make([]int, 10)
//len = 10 cap = 15
b := make([]int, 10, 15)
切片操作
- len() 返回长度
- cap() 返回底层数组容量
- append() 追加元素
- copy() 复制切片
字符串与切片的转换
str := "hello,世界"
// 转换成字节切片
a := []byte(str)
// 转换成 rune 切片
b := []rune(str)