首頁 > 後端開發 > Golang > 如何正確修改Go Map中的struct字段?

如何正確修改Go Map中的struct字段?

Barbara Streisand
發布: 2024-12-25 01:07:14
原創
1007 人瀏覽過

How Can I Correctly Modify Struct Fields Within a Go Map?

在Go 中直接修改結構體映射中的字段

在Go 中,int 到struct 的映射允許您訪問結構體值透過使用密鑰。然而,直接修改結構體值中的欄位可能會導致意外的行為。

間接的原因

當你從映射中存取結構體值時,你實際上是存取結構體的副本。修改此副本不會修改映射中的原始結構。要更改原始結構體,您需要讀取它,修改它,然後將其寫入映射中。

這是因為 Go 在分配給映射時將結構體值儲存在單獨的記憶體位置。修改副本不會影響原始值。

隱含隱藏成本

修改切片或映射等其他資料結構中的結構體欄位沒有隱含隱藏成本。其行為與整數到結構的映射的情況相同,其中對結構副本的修改不會影響原始結構。

指標的使用

可以使用指標就地修改原始結構體值。透過在映射中儲存指向結構體的指標而不是結構體本身,您可以直接存取和修改原始結構體的欄位。

範例:

import "fmt"

type dummy struct {
    a int
}

func main() {
    x := make(map[int]*dummy)
    x[1] = &dummy{a: 1}
    x[1].a = 2
    fmt.Println(x[1].a) // Output: 2
}
登入後複製

在此範例中,我們使用指標存取結構體值,從而允許我們直接修改其欄位。

以上是如何正確修改Go Map中的struct字段?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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