Arrays Can';t对二维数组的列进行切片“;无法将数独[0:9][0](类型[9]int)用作赋值中的[]int类型;

Arrays Can';t对二维数组的列进行切片“;无法将数独[0:9][0](类型[9]int)用作赋值中的[]int类型;,arrays,go,slice,sudoku,Arrays,Go,Slice,Sudoku,我正在用9x92D数组的切片制作一个简单的数独游戏。我还是和Golang开始,有一些C++经验。我一直收到错误消息“无法将数独[0:9][0](类型[9]int)用作赋值中的类型[]int” var row1[]int=Sudoku[0][0:9] 这一行正确地获取了2d数组第一行的值,并将它们放入了row1切片中,但是使用var col1[]int=Sudoku[0:9][0]会导致上面的错误消息。我能做什么?提前谢谢 比如说, package main import "fmt" func

我正在用9x92D数组的切片制作一个简单的数独游戏。我还是和Golang开始,有一些C++经验。我一直收到错误消息“无法将数独[0:9][0](类型[9]int)用作赋值中的类型[]int”

var row1[]int=Sudoku[0][0:9] 这一行正确地获取了2d数组第一行的值,并将它们放入了row1切片中,但是使用var col1[]int=Sudoku[0:9][0]会导致上面的错误消息。我能做什么?提前谢谢

比如说,

package main

import "fmt"

func main() {
    var Sudoku [9][9]int
    fmt.Println(Sudoku)
    var row1 []int = Sudoku[0][0:9]
    fmt.Println(row1)
    var col1 []int = Sudoku[0:9][0]
    fmt.Println(col1)
}
游乐场:


var col1[]int=Sudoku[0:9][0]
为您获取数组,而不是片。您可以声明为
var col1[9]int=Sudoku[0:9][0]
(或者更好的声明为:
col1:=Sudoku[0:9][0]
),或者如果您真的想要切片,则在获得col1后声明为:
var col1Slice[]int=col1[:]

一般来说,如果你的数独结构是一个2D切片而不是2D数组,事情会简单得多,那么你只需要处理切片

所有这些的工作示例:

像[9]int这样的数组和像[]int这样的切片在Go中是不同的类型。去旅行吧。去旅行吧。我不明白的是有什么选择。我希望一个切片包含2d数组中一列的值。考虑到上述方法失败,我如何才能做到这一点。
10:6: cannot use Sudoku[0:9][0] (type [9]int) as type []int in assignment