我尝试从标准输入扫描矩阵,然后使用以下代码进行打印。
package main
import (
"fmt"
)
func print2D(arr [][]int) {
for i:=0; i< len(arr); i++{
for j := 0; j< len(arr[0]); j++{
fmt.Printf("%d ", arr[i][j])
}
fmt.Println()
}
}
func main() {
var arr [6][6]int
for i:= 0 ; i < 6 ;i++ {
for j := 0; j< 6; j++{
fmt.Scanf("%d", &arr[i][j])
}
}
print2D(arr[:])
}
它会抛出以下错误
./ main.go:23:不能使用arr [:](type [] [6] int)作为类型[] [] int in print2D的参数
有没有办法在函数参数中定义尺寸而不传递2D切片?
答案 0 :(得分:1)
尝试将数据直接写入切片并稍后将其传递给函数。记住数组和切片是不同的类型。此外,类型[3]int
也不同于[4]int
(大小问题)。
package main
import (
"fmt"
)
func print2D(arr [][]int) {
for i := 0; i < len(arr); i++ {
for j := 0; j < len(arr[0]); j++ {
fmt.Printf("%d ", arr[i][j])
}
fmt.Println()
}
}
func main() {
var arr [][]int
for i := 0; i < 6; i++ {
tmp := make([]int, 6)
for j := 0; j < 6; j++ {
fmt.Scanf("%d", &tmp[j])
}
arr = append(arr, tmp)
}
print2D(arr)
}