Go では、変更しようとすると「const に代入できません」というエラーが発生することがあります。定数を宣言した後のマップ。この動作は、定数の性質と、Go 言語での定数の操作を管理するルールに起因します。
定数は、初期化後に値を変更できない値です。その主な目的は、プログラムの実行を通じて特定の値が同じままであることを保証することです。 Go では、定数には、整数、文字列、ブール値、列挙型など、さまざまな型を使用できます。ただし、これらの他のタイプとは異なり、マップは可変であるため定数として宣言できません。つまり、キーと値のペアは作成後に変更できることを意味します。
パス["Smith"] への代入が原因でエラーが発生します。 ["theSon"] はマップ定数の不変性に違反しています。この方法でマップを変更しようとすると、元の定数値が変更されることになりますが、これは Go コンパイラーによって禁止されています。代わりに、コンパイラは、マップを含むすべての定数が宣言時点で固定値を持つことを要求します。
この問題を解決するには、以下に示すように、マップを定数ではなく変数として宣言する必要があります。
var paths = map[string]*map[string]string{ Smith: { "theFather": "John", }, } paths["Smith"]["theSon"] = paths["Smith"]["theFather"] + " Junior"
マップを変数として宣言すると、マップは変更可能になり、必要に応じて変更できます。この回避策ではマップの変更が可能ですが、宣言時にすべてのキーと値のペアを初期化する必要があることに注意することが重要です。
以上がGo の定数マップはなぜ宣言後に埋められないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。