Go语言切片(Slice)
- 其本身并不是数组,它是指向底层的数组
- 作为变长数组的代替方案,可以关联底层数组的局部或全部
- 为引用类型
- 可以直接创建或从底层数组获取生成
- 使用
len()
获取元素个数,cap()
获取容量 - 一般使用
make()
创建 - 如果多个
slice
指向相同底层数组,其中一个的值改变会影响全部
切片和数组的区别
数组的长度是固定的,没办法动态增加数组的长度。而切片却没有这个限制,切片更灵活,实际上在 Go 中,切片比数组更为常见。切片并不存储任何元素而只是对现有数组的引用。切片[ ]中没数字,数组中[ ]内有数字。
创建
make([]T, len, cap)
len
表示存数的元素个数cap
表示容量,如省略则和len
的值相同
示例:
从数组中生成一个切片
func main() {
a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
s1 := a[:5]
fmt.Println(s1)
}