首頁 >後端開發 >Golang >為什麼我不能直接附加到 Go Map 的切片?

為什麼我不能直接附加到 Go Map 的切片?

Susan Sarandon
Susan Sarandon原創
2024-11-07 14:38:02826瀏覽

Why Can't I Append Directly to a Slice in a Go Map?

Go:為什麼我不能直接附加到地圖中找到的切片?

在 Go 中,當使用地圖時,您可能會遇到需要將值附加到地圖內現有切片的情況。但是,嘗試直接附加到透過存取返回的切片可能會導致變更未儲存。

為了說明此問題,請考慮以下程式碼片段:

在註解行,嘗試直接附加到由aminoAcidsToCodons[aminoAcid]傳回的切片。但是,此操作會失敗,因為傳回的是切片的副本,而不是對映射中切片的參考。

此行為的原因在於 Go 中追加的工作方式。當超出切片底層數組的容量時,append 會建立一個新切片並將現有元素複製到其中。然後返回這個新切片,而原始切片保持不變。

因此,要成功追加到映射中的切片,必須將追加操作的結果指派回映射中對應的鍵。這可以透過使用 nil 切片作為附加的第一個參數來進一步簡化,如以下修改後的程式碼所示:

以上是為什麼我不能直接附加到 Go Map 的切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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