首頁 > 後端開發 > Golang > 為什麼我無法指派給 Go Map 中的結構體欄位?

為什麼我無法指派給 Go Map 中的結構體欄位?

Patricia Arquette
發布: 2024-11-13 17:00:02
原創
661 人瀏覽過

Why Can't I Assign to a Struct Field in a Go Map?

分配給Map 中的結構字段

嘗試修改以下結構體字段時出現錯誤“無法分配給映射中的結構字段”儲存在映射中的結構。這個限制源自於 Go 中映射鍵和值的不變性。

在提供的範例中, snapshots := make(map[string] Snapshot, 1) 建立一個鍵為 string 類型、值為 string 類型的映射快照,其中快照是一個結構快照。若要修改快照值中的 Users 切片,您必須遵循正確的步驟。

以下方法可確保正確修改 Users 切片:

func main() {
  snapshots := make(map[string]Snapshot, 1)
  snapshots["test"] = Snapshot{
    Key:   "testVal",
    Users: make([]Users, 0),
  }
  
  // Get a copy of the 'Users' slice
  users := snapshots["test"].Users

  // Append user to the copy
  users = append(users, user)

  // Reassign the map entry
  snapshots["test"].Users = users
}
登入後複製

透過取得 ' 的副本使用者的切片,您可以修改,然後將修改後的副本重新指派給地圖條目。這種方法堅持了地圖的不變性。

以上是為什麼我無法指派給 Go Map 中的結構體欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板