ランタイム エラー:「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 サイトの他の関連記事を参照してください。