Go语言基础——数组切片| 青训营

49 阅读2分钟

数组(Array)是有序的元素序列,是具有相同 唯一类型的一组以编号且长度固定的数据项序列。切片(slice)是对数组一个连续片段的引用。本文将简要介绍数组与切片。

数组

数组声明与初始化

数组声明格式如下

var 数组名 [长度]数据类型

例如

var arr [5]int

第一个元素是arr[0],第三个元素是arr[2],最后一个元素是arr[len(arr)-1],上例中最后一个元素为arr[4]

数组是可变的,可以使用如下操作

arr[i] = value

Go 语言中的数组是一种 值类型(不像 C/C++ 中是指向首元素的指针),所以可以通过 new() 来创建: var arr1 = new([5]int),所以把一个数组赋值给另一个时,需要再做一次数组内存的拷贝操作。

例如

arr2 := *arr1 
arr2[2] = 100

在赋值后修改 arr2 不会对 arr1 生效

数组常量

可以用数组常量的方式来初始化数组,有以下几种方式

var arr1 = [3]int{12,4,90}
var arr2 = [...]int{2,34,7}
var arr3 = [5]string{2:"A",4:"b"}

只有索引2,4被赋予实际的值,其他元素都被设置为空的字符串

多维数组

数组多是一维的,也有多维数组,例如[3][5]int

切片

切片本质上是一个长度可变的数组 切片声明格式如下

var 切片名 []数据类型 = 数组名[开始部分:结束部分]

还可以用以下方法声明切片

var slice []type = arr[:]

则表示slice是完整的数组arr

一个由数字1,2,3组成的切片可以这么生成

s:=[3]int{1,2,3}[:]

或者

s:=[]int{1,2,3}

切片也可以用1类似数组的方式初始化

var s = []int{2, 3, 5, 7, 11}

相关数组还没有定义时,可以用make()函数创造一个切片,同时创建相关数组

var 切片名 []数据类型 = make([]数据类型, 长度)

这里的长度是数组长度,也是切片的初始长度