golang的二维数组

二维数组

二维数组其实可以理解为一维数组,只不过这个一维数组的每个数据又是一维数组

二维数组快速入门

func main() {

var a [3][3]int = [3][3]int{{1, 1, 1}, {2, 2, 2}, {3, 3, 3}}

fmt.Println(a)

for i := 0; i < len(a); i++ {

fmt.Println(a[i])

}

for i := 0; i < len(a); i++ {

for j := 0; j < len(a[i]); j++ {

fmt.Printf("%v ", a[i][j])

}

fmt.Println()

}

}

输出结果:

\[1 1 1\] \[2 2 2\] \[3 3 3\]

1 1 1

2 2 2

3 3 3

1 1 1

2 2 2

3 3 3

二维数组的使用

  1. 声明
    1. 标准声明(显式指定两个维度大小):
      var 数组名 [大小][大小]类型 = [大小][大小]类型{{初值...},{初值...}}
    2. 混合声明(第一维自动推导):
      var 数组名 [大小][大小]类型 = [...] [大小]类型{{初值...},{初值...}}
    3. 简化声明(类型推断):
      var 数组名 = [大小][大小]类型{{初值...},{初值...}}
    4. 完全简化声明(双维自动推导):
      var 数组名 = [...] [大小]类型{{初值...},{初值...}}

二维数组的遍历

  1. 双层for循环遍历
    var a [3][3]int = [3][3]int{{1, 1}, {2, 2, 2}, {3, 3, 3}}
    fmt.Println(a)
    for i := 0; i < len(a); i++ {
    for j := 0; j < len(a[i]); j++ {
    fmt.Printf("%v ", a[i][j])
    }
    fmt.Println()
    }
  2. for-range
    for _, v := range a {
    for _, vv := range v {
    fmt.Printf("%v ", vv)
    }
    fmt.Println()
    }