Golang程序 使用多维数组添加两个矩阵

使用多维数组添加两个矩阵的Golang程序

在本教程中,我们将编写一个go语言程序来添加两个矩阵。单维数组和多维数组的区别在于,前者持有一个属性,而后者则持有另一个数组的索引。此外,多维数组的每个元素都会有相同的数据类型。

使用循环添加两个矩阵

现在让我们看看一个Go语言程序,用循环来添加两个矩阵。

上述程序的算法

第1步 – 导入fmt包。

第2步 – 现在我们需要启动main()函数。

第3步 – 然后我们要创建两个矩阵,命名为matrixA和matrixB,并在其中存储数值。

第4步 – 使用fmt.Println()函数在屏幕上打印数组。

第5步 – 初始化一个新的int类型的矩阵来保存结果。

第6步 – 为了将两个矩阵相加,使用for循环来迭代这两个矩阵

第7步 – 使用第一个for循环是为了得到矩阵的行,而第二个for循环则是为了得到矩阵的列。

第8步 – 一旦循环结束,新的矩阵就是两个矩阵之和。

第9步 – 使用for循环和fmt.Println()函数打印新矩阵的元素。

示例

package main
import (
   "fmt"
)

// calling the main() function.
func main() {
   var i, j int
   var matrixC [3][3]int
   matrixA := [3][3]int{
      {0, 1},
      {4, 5},
      {8, 9},
   }
   matrixB := [3][3]int{
      {10, 11, 12},
      {13, 14, 15},
      {16, 17, 18},
   }
   fmt.Println("The first matrix is:")
   for i = 0; i < 3; i++ {
      for j = 0; j < 2; j++ {
         fmt.Print(matrixA[i][j], "\t")
      }
   fmt.Println()
   }
   fmt.Println()

   // printing the second matrix on the screen
   fmt.Println("The second matrix is:")
   for i = 0; i < 3; i++ {
      for j = 0; j < 3; j++ {
         fmt.Print(matrixB[i][j], "\t")
      }
      fmt.Println()
   }
   fmt.Println()
   fmt.Println("The results of addition of matrix A & B: ")
   for i = 0; i < 3; i++ {
      for j = 0; j < 3; j++ {
         matrixC[i][j] = matrixA[i][j] + matrixB[i][j]
      }
   }
   for i = 0; i < 3; i++ {
      for j = 0; j < 3; j++ {
         fmt.Print(matrixC[i][j], "\t")
      }
      fmt.Println()
   }
}

输出

The first matrix is:
0   1   
4   5   
8   9   
The second matrix is:
10  11  12  
13  14      15  
16  17  18  

The results of addition of matrix A & B: 
1012    12  
17  19  15  
24  26  18

使用外部函数添加两个矩阵

在这个例子中,我们将使用用户定义的函数来添加两个矩阵。

上述程序的算法

第1步 – 导入fmt包。

第2步 – 创建一个函数来添加两个矩阵。

第3步 – 在这个函数中,使用make()函数来创建矩阵的一个切片,使用range函数来迭代矩阵,以找到总和。

第4步 – 启动主功能。

第5步 – 初始化两个矩阵,并向它们存储元素 在屏幕上打印矩阵。

第6步 – 将两个矩阵作为参数传给函数,调用AddMatrices()函数。

第7步 – 储存获得的结果并在屏幕上打印出来。

语法

func make ([] type, size, capacity)

Go语言中的make函数是用来创建数组/映射的,它接受要创建的变量类型、其大小和容量作为参数。

func append(slice, element_1, element_2…, element_N) []T

append函数用于向一个数组片断添加值。它需要一些参数。第一个参数是我们希望添加的数组,后面是要添加的值。然后,该函数返回包含所有值的数组的最终片断。

示例

package main
import (
   "fmt"
)

// creating a function to add matrices
func AddMatrix(matrix1 [3][3]int, matrix2 [3][3]int) [][]int {
   result := make([][]int, len(matrix1))
   for i, a := range matrix1 {
      for j, _ := range a {
         result[i] = append(result[i], matrix1[i][j]+matrix2[i][j])
      }
   }
   return result
}
func main() {
   matrixA := [3][3]int{
      {0, 1, 2},
      {4, 5, 6},
      {8, 9, 10},
   }
   matrixB := [3][3]int{
      {10, 11},
      {13, 14},
      {16, 17},
   }
   fmt.Println("The first matrix is:")
   for i := 0; i < 3; i++ {
      for j := 0; j < 3; j++ {
         fmt.Print(matrixA[i][j], "\t")
      }
      fmt.Println()
   }
   fmt.Println()

   // printing the second matrix on the screen
   fmt.Println("The second matrix is:")
   for i := 0; i < 3; i++ {
      for j := 0; j < 2; j++ {
         fmt.Print(matrixB[i][j], "\t")
      }
      fmt.Println()
   }
   fmt.Println()

   // calling the AddMatrix() function
   result := AddMatrix(matrixA, matrixB)
   fmt.Println("The results of addition of matrix A & B: ")
   for i := 0; i < 3; i++ {
      for j := 0; j < 3; j++ {
         fmt.Print(result[i][j], "\t")
      }
      fmt.Println()
   }
}

输出

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

The second matrix is:
10  11  
13  14  
16  17  

The results of addition of matrix A & B: 
10  12  2   
17  19  6   
24  26  10  

结论

我们已经成功地编译并执行了一个Go语言程序,将其与实例一起添加到矩阵中。在第一个例子中,我们在main()函数中实现了逻辑,而在第二个例子中,我们使用了外部函数来实现上述逻辑。