为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
三国纷争 2021-12-27 18:23:22
我写了一个函数: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 函数的参数为矩阵设置不同的维度,因此我在第 2 行创建了一个切片。然后在我的 for 循环中填充矩阵。运行此代码时出现错误:type matrix is not an expression对于该matrix[i][j] = Z(i,j)行。我究竟做错了什么?矩阵 [i][j] 应该评估为表达式吗?为什么要在那里放东西(它现在是空的/不存在的!)?
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

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

尝试:

var matrix [][]uint8


查看完整回答
反对 回复 2021-12-27
?
千巷猫影

TA贡献1829条经验 获得超7个赞

虽然您可以使用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

}


查看完整回答
反对 回复 2021-12-27
  • 2 回答
  • 0 关注
  • 421 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号