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
}