切片初始化期間對 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中切片初始化時出現「Assignment to Entry in Nil Map Error」如何解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!