2 回答
TA贡献1848条经验 获得超10个赞
错误
错误来自于尝试从变量定义常量。在 Go 中,常量必须定义为从其他常量构建的文字或表达式。根据函数的输入,您的x和定义不同。通常,常量是在编译时定义的。yPic
例如,以下内容在 Go 中是可以的:
const w = 100
const x = 200
const y = w + x
const z = x + y + 300
但以下不是:
var x = 100
const y = x + 10
第二个示例本质上是您的代码中发生的事情,并且dx根据函数dy的输入而有所不同Pic。
如果您来自也有关键字的 JavaScript const,这可能看起来很奇怪。在 JavaScript 中,常量基本上只是一个在声明后无法更改的变量。在 Go 中,常量比在 JS 中更常量。
查看这篇文章以了解有关 Go 中常量的更多信息: https: //blog.golang.org/constants
创建阵列
数组大小与 Go 中的常量值有类似的约束。在此示例中,如果您尝试将 Array 的大小设置为等于dxor dy,您将收到错误消息:
非常量数组绑定 dx
因此,您必须在本示例中使用 Slice。最简单的方法是定义您的 Slice 长度,dy例如:
pic := make([][]uint8, dy)
TA贡献1877条经验 获得超1个赞
没有常数值。例如,
package main
import "golang.org/x/tour/pic"
func Pic(dx, dy int) [][]uint8 {
p := make([][]uint8, dy)
for x := range p {
p[x] = make([]uint8, dx)
for y := range p[x] {
p[x][y] = uint8(x * y)
}
}
return p
}
func main() {
pic.Show(Pic)
}
游乐场:https://play.golang.org/p/JQwGhfBth0o
- 2 回答
- 0 关注
- 143 浏览
添加回答
举报