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 關注
- 184 瀏覽
添加回答
舉報