duanpai9945 2015-07-14 14:32

# 如何在Go中将二维数组作为函数参数传递？

So I want to be able to pass a matrix as a function in an argument in Golang. It could be a different size each time - e.g., a 4x4 matrix, 3x2 matrix, etc. If I try running the test code below against the source code I get an error message like:

How do I pass a 2 dimensional array into a function? I'm new to Go and come from a dynamic language background (Python, Ruby).

``````cannot use mat[:][:] (type [][3]int) as type [][]int in argument to zeroReplaceMatrix
``````

source code

``````func ReplaceMatrix(mat [][]int, rows, cols, a, b int) {

}
``````

test code

``````func TestReplaceMatrix(t *testing.T) {
var mat [3][3]int
//some code
got := ReplaceMatrix(mat[:][:], 3, 3, 0, 1)
}
``````
• 写回答

#### 1条回答默认 最新

• dqqvravff05370501 2015-07-14 14:52
关注

The easiest way to use slices. Unlike arrays they are passed by reference,not by value. For example:

``````package main

import "fmt"

type Matrix [][]float64
func main() {
oneMatrix := Matrix{{1, 2}, {2, 3}}
twoMatrix := Matrix{{1, 2,3}, {2, 3,4}, {5, 6,7}}
print (oneMatrix)
print (twoMatrix)

}
func print(X Matrix) {
for _, i := range X {
for _, j := range i {
fmt.Printf("%f ", j)
}
fmt.Println()
}
}
``````
本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 悬赏问题

• ¥15 Delphi DBGrid弹出菜单问题
• ¥15 java map类型数据格式，如何快速通过前缀匹配元素
• ¥15 stc12c5a60s2、QMC5883L、LCD1602组合测量磁场所需程序
• ¥15 vba参数转c++ SAFEARRAY
• ¥20 Win11测试yolov4，“找不到nvcuda.dll”怎么办？