Go では、マップのゼロ値は nil で、初期化されていないマップを意味します。 nil マップに値を保存すると、実行時パニックが発生します。これは次の例で確認できます。
func main() { var data = map[string]map[string]string{} data["a"]["w"] = "x" println(data) }
このコードは、実行時に「nil マップのエントリへの代入」エラーでパニックになります。この問題を回避するには、以下に示すように、値を割り当てる前にマップを明示的に初期化します。
func main() { var data = map[string]map[string]string{} data["a"] = make(map[string]string) data["a"]["w"] = "x" println(data) }
この例では、make(map[string]string) は、map[string 型の新しい空のマップを作成します。 ]string.
ネストされたマップを初期化するもう 1 つの方法は、複合リテラルを使用することです。
func main() { var data = map[string]map[string]string{ "a": map[string]string{}, "b": map[string]string{}, "c": map[string]string{}, } data["a"]["w"] = "x" println(data) }
どちらの方法も正しく実行されます。ネストされたマップを初期化し、実行時パニックを引き起こすことなく値を保存できるようにします。
以上がGo でネストされたマップを安全に使用し、実行時のパニックを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。