亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試了解如何從 int params 構建數組

嘗試了解如何從 int params 構建數組

Go
智慧大石 2023-05-15 10:10:16
全部:當我嘗試跟隨 golang 的 Go 之旅時:練習:切片我的代碼是這樣的:package mainimport "golang.org/x/tour/pic"func Pic(dx, dy int) [][]uint8 {    const x = dx    const y = dy    pic := [y][x]uint8{};    for r:=range pic {        row := pic[r]        for c := range row {            row[c] = uint8(c*r)         }    }    return pic[:]}func main() {    pic.Show(Pic)}我得到了這樣的錯誤:prog.go:6:8: const initializer dx is not a constantprog.go:7:8: const initializer dy is not a constant我是 Go 的新手,我想知道這個錯誤是什么意思,如果我想先構建一個數組(除了使用 make() 構建切片之外),我該如何傳遞數組的長度?
查看完整描述

2 回答

?
慕桂英546537

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)


查看完整回答
反對 回復 2023-05-15
?
冉冉說

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


查看完整回答
反對 回復 2023-05-15
  • 2 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號