Go 中的常量陣列
Jay Singh
2023年1月30日
2022年4月22日
Go 開發人員相當擅長使用全域性常量而不是全域性變數進行設定。但是,在構造一些更復雜型別的常量版本時,我們遇到了一個問題。
我們不能使用 Go 編譯器來建立陣列、對映或切片常量。
Go 中的常量就是:常量。即使在函式中指定為區域性變數,它們也是在編譯時構造的,並且只能是整數、字元(符文)、字串或布林值。
由於編譯時的限制,定義它們的表示式必須是編譯器可以計算的常量表示式。
本文將討論建立常量陣列的替代方法。
在 Go 中使用 const
函式檢查常量陣列
Go 不支援常量陣列和切片。這是因為在 Go 中,常量值是在構建時生成的。
在執行時,總是評估陣列或切片。因此,以下程式會產生編譯錯誤。
package main
import "fmt"
func main() {
const a = [1]int{1}
fmt.Println(const a)
}
輸出:
const initializer [1]int literal is not a constant
在 Go 中使用 [...]
運算子宣告常量陣列
使用 [...]
而不是 []
可確保你獲得(固定大小)陣列而不是切片。結果,值不是固定的,而是大小。
package main
import "fmt"
func main() {
a := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(a)
}
輸出:
[1 2 3 4 5 6 7 8 9]