将 2D 切片传递给 Golang 函数参数



我正在尝试从 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)
}

最新更新