スライスの初期化中の nil マップ エントリへの代入エラー
この実行時エラーは、スライス内の nil マップ エントリに代入するときに発生します。提供されたコードでは、マップのスライスを作成しようとしたときにエラーが発生しています。
この問題を修正するには、アプローチを次のように変更する必要があります。
<code class="go">type Investor struct { Id string Name string } var invs []Investor for _, row := range rows { var inv_ids []string var inv_names []string // Create arrays of data from MySQL GROUP_CONCAT function inv_ids = strings.Split(row.Str(10), ",") inv_names = strings.Split(row.Str(11), ",") // Build slice of investors for i := 0; i < len(inv_ids); i++ { invs = append(invs, Investor{inv_ids[i], inv_names[i]}) } }</code>
ここでは、次のように定義します。各マップ エントリを表すカスタム Investor 構造体。次に、invs を Investor 構造体のスライスとして初期化し、ループ内に設定します。このアプローチでは、nil マップの使用を回避し、値の適切な割り当てを保証します。
提供された回答に示されている代替オプションには、複合リテラルを使用してスライス内でマップを直接初期化することが含まれます。これは次のようにして実現できます:
<code class="go">var invs []map[string]string for _, row := range rows { var inv_ids []string var inv_names []string // Create arrays of data from MySQL GROUP_CONCAT function inv_ids = strings.Split(row.Str(10), ",") inv_names = strings.Split(row.Str(11), ",") // Build slice of maps for i := 0; i < len(inv_ids); i++ { invs = append(invs, map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]}) } }</code>
以上がGo でスライスの初期化中に「Nil マップのエントリへの代入エラー」を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。