Go语言入门系列八《Golang数组》

一、数组的概念

数组是具有相同唯一类型的一组已编号且长度固定的数据项序列

首先类型唯一,也就是说如果我定义的数组类型是int,那么就不能存储 int 类型以外的其他类型。长度固定,也就是如果我定义的数组长度为 6 ,那么我最多只能往数组里面添加6个元素。那么可不可以少于6个元素,可以,但实际上,如果少于 6 那么默认会以该类型的默认值添加到 6 个元素为止。所以长度固定。最后一个关键词 序列,序列表示数组里的元素将会有顺序,所以有数组操作中经典的索引操作。

二、声明数组

基于上面的概念,我们需要指定类型,指定长度。完整的数组声明如下

var array_name [array_size] array_type

举个栗子:声明一个最多存储10个学号的数组

var strudent_no [10] int

三、数组的初始化

数组的初始化我们可以采用字面量的方式进行。如下面的代码

var strudent_no = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

此时{}中的元素个数不能大于我们定义的数组长度[10],可以少于或者等于,少于相当于默认将后面的元素设置为 0(int 类型的默认值)。如下面的代码

func main() {
    //定义一个长度为6的数组,但是我们初始化只给了4个元素
    var student_no_arr = [6]int{1, 2, 3, 4}

    for index, value := range student_no_arr {
        fmt.Printf("index=%d,value=%d\n", index, value)
    }
}

上面代码使用了 for 循环的 range 形式,可以遍历数组,使用简单两个参数分别接收数组的索引和对应的值。输出的结果如下

index=0,value=1
index=1,value=2
index=2,value=3
index=3,value=4
index=4,value=0
index=5,value=0

可以看到最后的第5和第6个元素使用了默认值 0。除了上面的初始化方式之外我们还可以省略数组的长度进行初始化。如下:

var student_no_arr = [...]int{1, 2, 3, 4}

...表示省略,此时长度将由系统根据后面的{}中的元素个数进行推断。

四、数组元素的访问

上面我们使用了 for 循环的 range 格式进行了一次遍历,其实本质上都是通过索引去访问数组元素。不使用range格式我们可以这样进行:

func main() {
    var student_no_arr = [...]int{1, 2, 3, 4}

    //len(array)返回数组的长度
    for i := 0; i < len(student_no_arr); i++ {
        fmt.Printf("index = %d,value = %d \n", i, student_no_arr[i])
    }
}

student_no_arr[index]表示访问该索引位置的元素,获取数组长度的函数为 len()

五、多维数组

多维数组简单来讲就是数组里面存放的元素又是数组。声明方式如下

var array_name [SIZE1][SIZE2]...[SIZEN] array_type

举个栗子

var arrays = [3][4][5] int

多维数组中比较常用的应该属二维数组

var array_name [SIZE1][SIZE2] array_type

eg:

var arrays = [3][2]int{
    {1,2},
    {3,4},
    {4,5},
}

访问二维数组中的元素,如下

arrays[2][0] //4

遍历二维数组

func main() {

    var arrays = [3][2]int{
        {1, 2},
        {3, 4},
        {4, 5},
    }

    for i := 0; i < len(arrays); i++ {
        for j := 0; j < len(arrays[i]); j++ {
            fmt.Printf("arrays[%d][%d] = %d \n", i, j, arrays[i][j])
        }
    }
}

输出结果为

arrays[0][0] = 1 
arrays[0][1] = 2 
arrays[1][0] = 3 
arrays[1][1] = 4 
arrays[2][0] = 4 
arrays[2][1] = 5 

未经允许不得转载