Go の定数配列
Jay Singh
2023年1月30日
2022年8月23日

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]