数组切片和数组在Go语言中不是一种数据类型,但他们很相似,区别是数组只能是固定长度,而数组切片可灵活的改变长度。

数组切片的创建方式:

Go语言支持myArray[first:last]这样的方式来基于数组生成一个数组切片,这个方法很灵活:

看个例子:

程序输出为:

除了这种方式外,还可以使用make()函数创建数组切片。

第二个参数为起始的元素个数,第三个参数为预留的存储空间(省缺)。为什么要预留空间这里就不细说,当数组切片的元素超过预留元素时,它会自动申请新的空间。

可使用cap()函数查看数组切片的预留空间,使用len()函数查看数组切片的元素个数。

程序将打印10,5

遍历数组切片:

其方法与数组一样,且支持range:

为数据切片增加新的元素,可使用append()函数。

其实,append的第二个参数是一个不定参数,我们可以直接追加一个数组切片。

效果等同于上面的代码。

需要注意的时,这里[]int{77,99,99}是一个数组切片,并不是一个数组,因为没有为其指定长度。

另外就是数组切片后面跟有三个点 … ,如果没有这三个点,会有编译错误。加入三个相当于将数组切片中的所有元素打散传入。

除了上述的几种创建方法外,还可以基于数组切片创建,将其当成数组一样即可。