3 回答

TA貢獻1824條經(jīng)驗 獲得超8個贊
數(shù)組本質(zhì)上不是一成不變的。您無法使其保持恒定。
您可以獲得的最接近的是:
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 }
請注意[...]
而不是[]
:它可確保您獲得(固定大小)數(shù)組而不是切片。因此值不是固定的,但是大小是固定的。

TA貢獻1772條經(jīng)驗 獲得超6個贊
從有效出發(fā):
Go中的常量就是常量。即使在函數(shù)中定義為局部變量時,也可以在編譯時創(chuàng)建它們,并且只能是數(shù)字,字符(符文),字符串或布爾值。由于編譯時的限制,定義它們的表達式必須是可由編譯器評估的常量表達式。例如,1<<3是一個常量表達式,而math.Sin(math.Pi/4)不是因為函數(shù)調(diào)用math.Sin需要在運行時發(fā)生。
切片和數(shù)組始終在運行時評估:
var TestSlice = []float32 {.03, .02}
var TestArray = [2]float32 {.03, .02}
var TestArray2 = [...]float32 {.03, .02}
[...]告訴編譯器找出數(shù)組本身的長度。切片包裝數(shù)組,在大多數(shù)情況下更易于使用。代替使用常量,只需使用小寫的第一個字母使變量對其他包不可用:
var ThisIsPublic = [2]float32 {.03, .02}
var thisIsPrivate = [2]float32 {.03, .02}
thisIsPrivate僅在定義的包中可用。如果需要從外部進行讀取訪問,則可以編寫一個簡單的getter函數(shù)(請參閱golang中的Getters)。

TA貢獻1831條經(jīng)驗 獲得超4個贊
Go中沒有數(shù)組常量之類的東西。
引用Go語言規(guī)范:常量:
有布爾常量,符文常量,整數(shù)常量,浮點常量,復數(shù)常量和字符串常量。符文,整數(shù),浮點數(shù)和復數(shù)常量統(tǒng)稱為數(shù)字常量。
甲常量表達式(這被用來初始化一個常數(shù))可以僅含有恒定操作數(shù)和在編譯時被評估。
該規(guī)范列出了不同類型的常量。請注意,您可以使用類型的常量表達式(以允許的類型之一作為基礎類型)創(chuàng)建和初始化常量。例如,這是有效的:
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
如果需要數(shù)組,則只能是變量,而不能是常量。
我推薦這篇關于常量的很棒的博客文章:常量
- 3 回答
- 0 關注
- 199 瀏覽
添加回答
舉報