介绍一下Go语言的切片
(一)切片产生背景
数组大小限定长度限定并且不可以进行扩容,在固定的条件下非常局限
切片可以实现对数组的动态切割,可以进行切割、裁剪
(二)切片的定义
(1)使用未知长度的数组
var 切片名 []切片类型
例如:
atemp := [11]int{1, 2, 3, 4, 5, 6, 9, 8, 7, 0}
var a []int = atemp[:]
a1 := atemp[3:]
a2 := atemp[:6]
(2)使用make进行初始化
make类似于new的作用,但是又有一些不同:
new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为*T的内存地址:这种方法
返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体;它相当于 &T{}。
make(T) 返回一个类型为 T 的初始值,它只适用于3种内建的引用类型:切片、map 和 channel
初始化方法:
a:=make(参数1,参数2,参数3)
参数1:切片类型
参数2:切片长度
参数3:切片的容量
判断一个切片是否满了可以用len()测试切片长度、cap()测试切片容量
如果切片内的容量满了切片会进行加倍扩容,每次扩大后的容量是原来的两倍
切片有容量与长度这一概念与数组有本质的区别
初始化切片并进行扩容(扩容是自动的)
b := make([]int, 3, 5)
b = append(b, 1, 2, 3)
b = append(b, 1, 2, 3)
b = append(b, 1, 2, 3)
(三)空切片初始值为nil
空切片声明方式:
var a[]int

简短的切片,GO GO GO !