執行階段錯誤:「Assignment to Entry in Nil Map」已解決
當嘗試建立Map 切片時,您可能會遇到運行時錯誤「分配給nil 映射中的條目」。此錯誤表示您正在嘗試存取 nil Map 值,這是不允許的。
問題陳述
您在建立 Map 陣列時遇到此錯誤,每個包含兩個鍵:「Id」和「Investor」。嘗試的程式碼如下:
<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>
解決方案
要解決此錯誤,您應該直接在循環中建立一個Maps 切片,而不是建立nil Maps並為它們賦值。這可以使用複合文字來實現:
<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 中建立映射切片時如何修復「Assignment to Entry in Nil Map」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!