首頁  >  文章  >  後端開發  >  Go中切片初始化時出現「Assignment to Entry in Nil Map Error」如何解決?

Go中切片初始化時出現「Assignment to Entry in Nil Map Error」如何解決?

Linda Hamilton
Linda Hamilton原創
2024-11-05 11:37:02533瀏覽

How to Resolve the

切片初始化期間對 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn