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

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

聲明一個常量數組

聲明一個常量數組

Go
FFIVE 2019-11-14 10:36:46
我努力了:const ascii = "abcdefghijklmnopqrstuvwxyz"const letter_goodness []float32  = { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 }const letter_goodness  = { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 }const letter_goodness = []float32 { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 }首先,聲明和初始化可以正常工作,但是第二,第三和第四不起作用。如何聲明和初始化浮點數的const數組?
查看完整描述

3 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

數組不是天生不變的。您無法使其保持恒定。


您可以獲得的最接近的是:


var letter_goodness = [...]float32 {.0817, .0149, .0278, .0425, .1270, .0223, .0202, .0609, .0697, .0015, .0077, .0402, .0241, .0675, .0751, .0193, .0009, .0599, .0633, .0906, .0276, .0098, .0236, .0015, .0197, .0007 }

請注意[...]而不是[]:它可確保獲得(固定大小)數組而不是切片。因此值不是固定的,但大小是固定的。


查看完整回答
反對 回復 2019-11-14
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

從有效出發:


Go中的常數就是常數。它們是在編譯時創建的,即使在函數中定義為局部變量時也只能是數字,字符串或布爾值。由于編譯時的限制,定義它們的表達式必須是可由編譯器評估的常量表達式。例如,1 << 3是一個常量表達式,而math.Sin(math.Pi / 4)并不是因為對math.Sin的函數調用需要在運行時發生。


切片和數組始終在運行時評估:


var TestSlice = []float32 {.03, .02}

var TestArray = [2]float32 {.03, .02}

var TestArray2 = [...]float32 {.03, .02}

[...]告訴編譯器找出數組本身的長度。切片包裝數組,在大多數情況下更易于使用。代替使用常量,只需使用小寫的第一個字母,使變量對其他包不可用:


var ThisIsPublic = [2]float32 {.03, .02}

var thisIsPrivate = [2]float32 {.03, .02}

thisIsPrivate僅在定義的包中可用。如果需要從外部進行讀取訪問,則可以編寫一個簡單的getter函數(請參閱golang中的Getters)。


查看完整回答
反對 回復 2019-11-14
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

Go中沒有數組常量之類的東西。


引用Go語言規范:常量:


有布爾常量,符文常量,整數常量,浮點常量,復數常量和字符串常量。符文,整數,浮點數和復數常量統稱為數字常量。


甲常量表達式(這被用來初始化一個常數)可以僅含有恒定操作數和在編譯時被評估。


該規范列出了不同類型的常量。請注意,您可以使用類型的常量表達式(以允許的類型之一作為基礎類型)創建和初始化常量。例如,這是有效的:


func main() {

    type Myint int

    const i1 Myint = 1

    const i2 = Myint(2)

    fmt.Printf("%T %v\n", i1, i1)

    fmt.Printf("%T %v\n", i2, i2)

}

輸出(在Go Playground上嘗試):


main.Myint 1

main.Myint 2

如果需要數組,則只能是變量,而不能是常量。



查看完整回答
反對 回復 2019-11-14
  • 3 回答
  • 0 關注
  • 1249 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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