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

Linda Hamilton
リリース: 2024-11-04 14:59:12
オリジナル
726 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!