Go语言:类型XXX不是表达式
Go language: Type XXX is not an expression
我写了一个函数:
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 值和 return 填充一个矩阵。因为我想根据 Pic 函数的参数为矩阵设置不同的维度,所以我在第 2 行创建了一个切片。然后在我的 for 循环中我填充了矩阵。
我在 运行 此代码时收到错误消息:type matrix is not an expression
用于 matrix[i][j] = Z(i,j)
行。我究竟做错了什么? matrix[i][j] 应该计算为一个表达式吗?为什么要它,当我想在那里放东西时(现在是 empty/non-existent!)?
您将 matrix
声明为类型,但将其用作变量。
尝试:
var matrix [][]uint8
虽然您可以使用 var matrix [][]uint8
,但我建议您使用内置的 make
函数,因为您知道所需的长度——dx
用于外部切片,[=14] =] 用于内部切片。 Two-dimensional slices section of Effective Go给出了一个使用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 {
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 值和 return 填充一个矩阵。因为我想根据 Pic 函数的参数为矩阵设置不同的维度,所以我在第 2 行创建了一个切片。然后在我的 for 循环中我填充了矩阵。
我在 运行 此代码时收到错误消息:type matrix is not an expression
用于 matrix[i][j] = Z(i,j)
行。我究竟做错了什么? matrix[i][j] 应该计算为一个表达式吗?为什么要它,当我想在那里放东西时(现在是 empty/non-existent!)?
您将 matrix
声明为类型,但将其用作变量。
尝试:
var matrix [][]uint8
虽然您可以使用 var matrix [][]uint8
,但我建议您使用内置的 make
函数,因为您知道所需的长度——dx
用于外部切片,[=14] =] 用于内部切片。 Two-dimensional slices section of Effective Go给出了一个使用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
}