gpt4 book ai didi

go - 将二维 slice 传递给 Golang 函数参数

转载 作者:IT王子 更新时间:2023-10-29 02:10:08 25 4
gpt4 key购买 nike

我正在尝试从标准输入扫描矩阵并使用以下代码简单地打印它。

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: cannot use arr[:] (type [][6]int) as type [][]int in argument to print2D

有没有办法在不在函数参数中定义大小的情况下传递二维 slice ?

最佳答案

尝试将数据直接写入 slice ,稍后将其传递给函数。记住数组和 slice 是不同的类型。此外,[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)
}

关于go - 将二维 slice 传递给 Golang 函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49209858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com