Go 语言程序读取和打印二维数组


什么是二维数组?

二维数组是由按行和列排列的数据组成的集合。在 Go 中,我们可以使用 for 循环来迭代和打印二维数组的元素。

下面是一个示例:

0  1  2
4  5  6
8  9  10

方法 1:使用 For 循环

在此方法中,我们将使用 Go 语言中的 for 循环遍历数组并捕获每个元素,然后打印该元素,直到遍历完整个数组。

算法

  • 步骤 1 − 导入 fmt 包。

  • 步骤 2 − 现在我们需要开始 main() 函数。

  • 步骤 3 − 然后创建一个名为 matrix 的二维矩阵,并将数据存储到其中。

  • 步骤 4 − 现在,使用两个 for 循环来迭代数组元素。使用第一个 for 循环将获取多维数组的行,而第二个 for 循环将提供二维数组的列。

  • 步骤 5 − 获取特定矩阵元素后,在屏幕上打印该元素,并继续下一个元素,直到循环完成。

示例

在此示例中,我们将使用 for 循环通过 for 循环读取和打印二维数组的元素。

package main
import "fmt"
func main() {

   // initializing variables
   var array [][]int
   var row int
   var col int
   array = make([][]int, row)
   for i := range array {
      array[i] = make([]int, col)
   }
   
   // assigning data to matrix
   array = [][]int{
      {0, 1, 2},
      {4, 5, 6},
      {8, 9, 10},
   }
   
   // printing the matrix elements
   fmt.Println("The given matrix is:")
   for i := 0; i < 3; i++ {
      for j := 0; j < 3; j++ {
         fmt.Print(array[i][j], "\t")
      }
      fmt.Println()
   }
   fmt.Println()
}

输出

The given matrix is:
0	1	2	
4	5	6	
8	9	10	

方法 2:使用内置函数

在此方法中,我们将使用第一个示例中的 range 函数和第二个示例中的数组切片。

算法

  • 步骤 1 − 导入 fmt 包。

  • 步骤 2 − 现在我们需要开始 main() 函数。

  • 步骤 3 − 然后我们创建一个名为 matrix 的矩阵,并为其分配数据。

  • 步骤 4 − 现在使用 range 函数迭代矩阵元素,并在屏幕上打印矩阵的每个元素。

示例 1

在此示例中,我们将使用 Go 编程的 range 函数结合 range 函数和 for 循环来获取二维数组的元素。

package main
import "fmt"
func main() {

   // initializing variables
   var array [][]int
   var row int
   var col int
   array = make([][]int, row)
   for i := range array {
      array[i] = make([]int, col)
   }
   
   // assigning data to matrix
   array = [][]int{
      {10, 13, 21},
      {47, 54, 63},
      {82, 91, 0},
   }
   
   // printing the matrix elements
   fmt.Println("The required array is:")
   for _, row := range array {
      for _, val := range row {
         fmt.Print(val, "\t")
      }
      fmt.Println()
   }
}

输出

The required array is:
10	13	21	
47	54	63	
82	91	0

示例 2

在此程序中,我们将使用 Go 语言的数组切片属性来打印二维数组。

package main
import "fmt"
func main() {

   // initializing variables
   var array [][]int
   var row int
   var col int
   array = make([][]int, row)
   for i := range array {
      array[i] = make([]int, col)
   }

   // assigning data to matrix
   array = [][]int{
      {10, 13, 21},
      {47, 54, 63},
      {82, 91, 0},
   }

   // printing the matrix elements
   fmt.Println("The required array is:")
   for _, j := range array {
      fmt.Print(j, "\t")
      fmt.Println()
   }
   fmt.Println()
}

输出

The required array is:
[10 13 21]	
[47 54 63]	
[82 91 0]

方法 3:使用递归

在此方法中,我们将使用递归的概念在屏幕上读取和打印二维数组的元素。

算法

  • 步骤 1 − 首先,我们需要导入 fmt 包。

  • 步骤 2 − 现在,创建一个名为 printMatrix() 的递归函数,该函数接受多维数组作为其参数以及应打印的当前行索引。

  • 步骤 3 − 现在,如果当前行变量等于多维数组的长度,则程序将结束。

  • 步骤 4 − 使用 for 循环迭代数组并打印当前元素。打印完当前行后,函数通过递增行变量再次调用自身。

  • 步骤 5 − 通过这种方式,数组的所有三行都打印在屏幕上。

  • 步骤 6 − 现在,开始 main() 函数。在 main() 中初始化一个二维数组并为其赋值。

  • 步骤 7 − 现在,通过将矩阵以及当前行位置作为参数传递给函数来调用 printMatrix() 函数。

示例

以下代码使用递归方法读取和打印二维数组

package main
import "fmt"
func printMatrix(matrix [][]int, row int) {
   if row == len(matrix) {
      return
   }
   for _, element := range matrix[row] {
      fmt.Print(element, "\t")
   }
   fmt.Println()
   printMatrix(matrix, row+1)
}
func main() {

   // initializing variables
   var array [][]int
   var row int
   var col int
   array = make([][]int, row)
   for i := range array {
      array[i] = make([]int, col)
   }
   
   // assigning data to matrix
   array = [][]int{
      {12, 13, 21},
      {47, 54, 23},
      {28, 19, 61},
   }
   fmt.Println("The given matrix is:")
   printMatrix(array, 0)
}

输出

The given matrix is:
12	13	21	
47	54	23	
28	19	61

结论

我们已成功编译并执行了一个 Go 语言程序来读取和打印多维数组的元素。在第一个示例中,我们仅使用了 for 循环,而在第二个示例中,我们使用了 range 函数和 for 循环的组合。在第三个示例中,我们使用了递归的概念,其中我们不断调用函数本身直到执行完成。

更新于: 2023年2月16日

3K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告