教程 > Go 教程 > Go 基础 阅读:127

Go 语言多维数组详解

Go 编程语言允许多维数组。之前我们整体上介绍了Go语言中的数组,不过都是建立在一维数组上的。本章节就来介绍一下Go 语言中的多维数组。

以下是多维数组声明的一般形式

var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type

例如,以下声明创建了一个三维( 5 . 10 . 4 )整数数组

var threedim [5][10][4]int

二维数组

二维数组是最简单的多维数组,二维数组本质上是由一维数组组成的。二维数组定义方式如下:

var arrayName [ x ][ y ] variable_type

variable_type 为 Go 语言的数据类型,arrayName 为数组名,二维数组可认为是一个表格,x 为行,y 为列,下图演示了一个二维数组 a 为三行四列:

go 二维数组

因此,数组 a 中的每个元素都由a[ i ][ j ]形式的元素名称标识,其中 a 是数组的名称,而 i 和 j 是唯一标识 a 中每个元素的下标。二维数组中的元素可通过 a[ i ][ j ] 来访问。


初始化二维数组

多维数组可通过大括号来初始值。以下实例为一个 3 行 4 列的二维数组:

a := [3][4]int{  
 {0, 1, 2, 3} ,   /*  第一行索引为 0 */
 {4, 5, 6, 7} ,   /*  第二行索引为 1 */
 {8, 9, 10, 11},   /* 第三行索引为 2 */
}

注意:以上代码中倒数第二行的 } 必须要有逗号,因为最后一行的 } 不能单独一行,也可以写成这样:

a := [3][4]int{  
{0, 1, 2, 3} ,   /*  第一行索引为 0 */
{4, 5, 6, 7} ,   /*  第二行索引为 1 */
{8, 9, 10, 11}}   /* 第三行索引为 2 */

下面我们通过一个实际的例子来初始化一个二维数组

package main

import (  
    "fmt"
)

func main() {  
    a := [3][2]string{
        {"lion", "tiger"},
        {"cat", "dog"},
        {"pigeon", "peacock"}, //this comma is necessary. The compiler will complain if you omit this comma
    }
    fmt.Println(a)
}

运行示例

上述代码执行结果如下

[[lion tiger] [cat dog] [pigeon peacock]]

访问二维数组元素

二维数组中的元素是通过使用下标访问的,即数组的行索引和列索引。例如 -

int val = a[2][3]

上面的语句将从数组的第 3 行中取出第 4 个元素。我们可以在上图中进行验证。下面我们处理二维数组

package main

import (  
    "fmt"
)

func printarray(a [3][2]string) {  
    for _, v1 := range a {
        for _, v2 := range v1 {
            fmt.Printf("%s ", v2)
        }
        fmt.Printf("\n")
    }
}

func main() {  
    a := [3][2]string{
        {"lion", "tiger"},
        {"cat", "dog"},
        {"pigeon", "peacock"}, //this comma is necessary. The compiler will complain if you omit this comma
    }
    printarray(a)
    var b [3][2]string
    b[0][0] = "apple"
    b[0][1] = "jiyik"
    b[1][0] = "microsoft"
    b[1][1] = "google"
    b[2][0] = "AT&T"
    b[2][1] = "T-Mobile"
    fmt.Printf("\n")
    printarray(b)
}

运行示例

使用两个 for range 循环来打印二维数组的内容。上述代码编译执行结果如下

lion tiger 
cat dog 
pigeon peacock 

apple jiyik 
microsoft google 
AT&T T-Mobile 

查看笔记

扫码一下
查看教程更方便