转到语言:类型XXX不是表达式

时间:2016-03-30 16:24:29

标签: 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)
        }
    }

    return matrix
}

应该用每个x和y值的z值填充矩阵并返回它。由于我希望根据Pic函数的参数为​​矩阵设置不同的尺寸,我创建一个切片i第2行。然后在我的for循环中,我填充矩阵。

运行此代码后出现错误:type matrix is not an expressionmatrix[i][j] = Z(i,j)。我究竟做错了什么?矩阵[i] [j]应该评估表达式吗?为什么要这样,当我想把东西放在那里时(它现在是空的/不存在的!)?

2 个答案:

答案 0 :(得分:4)

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

尝试:

var matrix [][]uint8

答案 1 :(得分:4)

虽然您可以使用RecyclerView,但我建议您使用内置var matrix [][]uint8功能,因为您知道外部切片所需的长度 - makedx对于内部切片。 Two-dimensional slicesEffective Go部分给出了使用dy分配二维切片的示例。以下是make功能的示例。

Pic