Go语言:XXX类型不是表达式

Go语言:XXX类型不是表达式,go,slice,Go,Slice,我编写了一个函数: func Pic(dx, dy int) [][]uint8 { type matrix [][]uint8 for i := 0; i < dx; i++ { // fills up the matrix with z's in their right places. for j := 0; j < dy; j++ { matrix[i][j] = Z(i,j) } }

我编写了一个函数:

func Pic(dx, dy int) [][]uint8 {
    type matrix [][]uint8 

    for i := 0; i < dx; i++ { // fills up the matrix with z's in their right places.
        for j := 0; j < dy; j++ {
            matrix[i][j] = Z(i,j)
        }
    }

    return matrix
}
func Pic(dx,dy int)[]uint8{
类型矩阵[][]uint8
对于i:=0;i
这应该是用每个x和y值的z值填充一个矩阵并返回它。由于我想根据Pic函数的参数为矩阵设置不同的维数,所以我创建了一个切片I line 2。然后在for循环中填充矩阵


运行此代码时出现错误:
类型矩阵不是
矩阵[I][j]=Z(I,j)
行的表达式。我做错了什么?矩阵[i][j]是否应计算为表达式?当我想把某个东西放在那里(它现在是空的/不存在!)时,为什么要这样做呢?

您将
matrix
声明为一个类型,但将其用作一个变量

尝试:


虽然您可以使用
var matrix[][]uint8
,但我建议您使用内置的
make
功能,因为您知道外部切片的所需长度-
dx
,以及内部切片的
dy
。的部分给出了使用
make
分配二维切片的示例。下面是
Pic
函数的示例

func Pic(dx, dy int) [][]uint8 {
    matrix := make([][]uint8, dx)

    for i := 0; i < dx; i++ {
        matrix[i] = make([]uint8, dy)
        for j := 0; j < dy; j++ {
            matrix[i][j] = Z(i, j)
        }
    }
    return matrix
}
func Pic(dx,dy int)[]uint8{
矩阵:=make([]uint8,dx)
对于i:=0;i
非常有用!谢谢
func Pic(dx, dy int) [][]uint8 {
    matrix := make([][]uint8, dx)

    for i := 0; i < dx; i++ {
        matrix[i] = make([]uint8, dy)
        for j := 0; j < dy; j++ {
            matrix[i][j] = Z(i, j)
        }
    }
    return matrix
}