ホームページ >バックエンド開発 >Golang >Goでマップのスライスを作成するときに発生する「Nilマップのエントリへの割り当て」エラーを修正する方法は?

Goでマップのスライスを作成するときに発生する「Nilマップのエントリへの割り当て」エラーを修正する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 14:59:12793ブラウズ

How to Fix

ランタイム エラー:「Nil マップのエントリへの代入」は解決されました

マップのスライスを作成しようとすると、ランタイム エラーが発生する可能性がありますエラー「nil マップのエントリへの代入」このエラーは、許可されていない nil Map 値にアクセスしようとしていることを示しています。

問題の説明

マップの配列を構築中にこのエラーが発生しています、それぞれに「Id」と「Investor」という 2 つのキーが含まれています。試行されたコードは次のとおりです。

<code class="go">for _, row := range rows {
    invs := make([]map[string]string, length)

    for i := 0; i < length; i++ {
        invs[i] = make(map[string]string)
        invs[i]["Id"] = inv_ids[i]
        invs[i]["Investor"] = inv_names[i]
    }
}</code>

Resolution

このエラーを解決するには、nil Map を作成する代わりに、ループ内で直接 Map のスライスを作成する必要があります。そしてそれらに値を割り当てます。これは、複合リテラルを使用して実現できます:

<code class="go">for _, row := range rows {
    invs := make([]map[string]string, length)

    for i := 0; i < length; i++ {
        invs[i] = map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]}
    }
}</code>

代替アプローチ

または、構造体を使用して投資家を表すこともできます:

<code class="go">type Investor struct {
    Id       int
    Investor string
}

for _, row := range rows {
    invs := make([]Investor, length)

    for i := 0; i < length; i++ {
        invs[i] = Investor{
            Id:       inv_ids[i],
            Investor: inv_names[i],
        }
    }
}</code>

構造体を使用すると、データがよりクリーンで構造化された表現になります。

以上がGoでマップのスライスを作成するときに発生する「Nilマップのエントリへの割り当て」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。