3 回答

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 }
請注意[...]而不是[]:它可確保獲得(固定大小)數組而不是切片。因此值不是固定的,但大小是固定的。

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)。

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
如果需要數組,則只能是變量,而不能是常量。
- 3 回答
- 0 關注
- 1249 瀏覽
添加回答
舉報