ホームページ > バックエンド開発 > Golang > Go の定数マップはなぜ宣言後に埋められないのでしょうか?

Go の定数マップはなぜ宣言後に埋められないのでしょうか?

DDD
リリース: 2024-11-19 03:32:02
オリジナル
657 人が閲覧しました

Why Can't Constant Maps in Go Be Filled After Declaration?

Go の定数マップ: 宣言後に埋められないのはなぜですか?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート