扫码一下
查看教程更方便
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 为三行四列:
因此,数组 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