Go における定数の制限を理解する
Go では、定数を使用することで、プログラム全体で値が不変であることが保証されます。この不変性は、マップを含むコア データ構造にまで拡張されます。以下のコード スニペットに見られるように、定数マップを定義すると、コンパイラ エラーが発生します:
const ( paths = &map[string]*map[string]string { Smith: { "theFather": "John", }, } paths["Smith"]["theSon"] = paths["Smith"]["theFather"] + " Junior" )
コンパイラ エラーが発生するのはなぜですか?
コンパイラ エラーの原因は次のとおりです。定数の基本的な性質から。定数は変更されないことが期待されており、変更しようとするとエラーとしてフラグが立てられます。定数的な変更を許可する他の言語とは異なり、Go はこの原則を厳密に遵守しています。
マップ定数の制限
マップは Go の動的なデータ構造であり、キーと値を使用できます。ペアは作成後に追加または削除されます。この動的な性質は、定数の不変特性と矛盾します。したがって、Go では定数マップの宣言は許可されません。
許可される定数の型
Go の仕様では、次の型が有効な定数として定義されています: boolean、rune、integer、浮動小数点、複素数、文字列。
回避策
定数コンテキストでマップを利用するには、回避策は、マップを変数ではなく変数として定義することです。絶え間ない。これにより、マップが定数宣言内で使用されている場合でも、マップの内容を変更できるようになります。
以上がGo で定数マップを定義できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。