本文将从以下几个方面对golang定义数组进行详细的阐述:
一、定义数组
在golang中,数组的定义形式如下:
var 变量名 [长度]数据类型
例如,我们定义一个长度为5的整型数组:
var arr [5]int
其中,arr为数组名,[5]为数组长度,int为数组元素的数据类型。
二、初始化数组
数组的初始化可以在定义数组的同时进行,也可以在之后进行。以下是golang数组初始化的几种方法:
方法1:在定义数组同时进行初始化
var arr1 [5]int = [5]int{1, 2, 3, 4, 5}
其中,[5]int为数组类型,{1,2,3,4,5}为数组的元素。
方法2:不指定数组长度,让编译器自动识别
arr2 := [...]int{1, 2, 3, 4, 5}
这种方式数组长度由编译器自动识别。
方法3:指定部分元素的值
arr3 := [5]int{1,2}
这种方式只指定部分元素的值,其他元素默认为0。
三、遍历数组
golang提供了两种方式遍历数组:
方法1:for循环遍历
for i := 0; i < len(arr); i++ {
fmt.Printf("%d ", arr[i])
}
以上代码使用for循环遍历数组arr,len()函数获取数组长度。
方法2:range遍历
for i, v := range arr {
fmt.Printf("arr[%d]=%d\n", i, v)
}
以上代码使用range关键字遍历数组,其中i为数组下标,v为数组元素的值。
四、多维数组
golang也支持多维数组,如下定义一个2行3列的二维数组:
var arr4 [2][3]int
数组的初始化可以使用以下形式:
arr4 := [2][3]int{
{1,2,3},
{4,5,6},
}
在多维数组中,可以使用嵌套循环进行遍历,例如:
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
fmt.Printf("%d ", arr[i][j])
}
fmt.Println()
}
五、数组切片
数组切片是在数组的基础上抽象出的一种数据结构,可以动态的增加或删除其中的元素。下面是一个使用数组切片进行元素插入和删除的例子:
slice := make([]int, 5)
slice[0] = 1
slice[1] = 2
slice[2] = 3
slice[3] = 4
slice[4] = 5
// 插入元素
slice = append(slice, 6)
// 删除第一个元素
slice = slice[1:]
fmt.Println(slice) // 输出[2 3 4 5 6]
以上代码使用make函数创建了一个长度为5的数组切片,然后将元素1至5插入到切片中,使用append方法向切片中插入元素6,使用切片操作符删除第一个元素,最后将修改后的切片输出。