首頁  >  文章  >  後端開發  >  在 Go 中建立映射切片時如何修復「Assignment to Entry in Nil Map」錯誤?

在 Go 中建立映射切片時如何修復「Assignment to Entry in Nil Map」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-11-04 14:59:12718瀏覽

How to Fix

執行階段錯誤:「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中文網其他相關文章!

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