我正在尝试从 stdin 扫描矩阵并使用以下代码简单地打印它。
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[:] (类型 [][6]int( 作为类型 [][]int 在 打印2D 的参数
有没有办法在不定义函数参数中大小的情况下传递 2D 切片?
尝试将数据
直接写入切片,稍后再传递给函数。请记住,数组和切片是不同的类型。此外,[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)
}