定义一个数组
var a [4]int
b := [2]string{"Penn", "Teller"}
b := [...]string{"Penn", "Teller"}
定义一个切片(和数组不同的是,切片类型并没有给定固定的长度。)
letters := []string{"a", "b", "c", "d"}
// 函数 make 接受一个类型、一个长度和一个可选的容量参数。
s := make([]byte, 5, 5) // s == []byte{0, 0, 0, 0, 0}, 调用 make 时,内部会分配一个数组,然后返回数组对应的切片。
切片的长度len(s)和容量cap(s)
切片的零值为 nil 。对于切片的零值, len 和 cap 都将返回0。
// 切片也可以基于现有的切片或数组生成。切分的范围由两个由冒号分割的索引对应的半开区间指定。 例如,表达式b[1:4] 创建的切片引用数组 b 的第1到3个元素空间(对应切片的索引为0到2)。
b := []byte{'g', 'o', 'l', 'a', 'n', 'g'}
// b[1:4] == []byte{'o', 'l', 'a'}, sharing the same storage as b
切片的开始和结束的索引都是可选的;它们分别默认为零和数组的长度。
// b[:2] == []byte{'g', 'o'}
// b[2:] == []byte{'l', 'a', 'n', 'g'}
// b[:] == b
基于数组创建一个切片
x := [3]string{“Лайка”, “Белка”, “Стрелка”}
s := x[:] // a slice referencing the storage of x