当我从Go中的地图中检索结构时,是否可以获得该值的副本?还是获得地图中的实际值?
例如,假设我有一个从字符串到结构的映射:
type quality struct {
goodness int
crunchiness int
}
cookies := make(map[string]quality)
cookies["nutrageous"] = quality{goodness: 3, crunchiness: 10}
我想修改一个条目。
我可以指望返回的值与地图中的值相同吗?
c := cookies["nutrageous"]
c.goodness += 5
还是我还必须返回并修改地图中的内容?
c := cookies["nutrageous"]
c.goodness += 5
cookies["nutrageous"] = c
为地图建立索引将返回地图值的副本。如果映射值是结构,则对返回的结构值的修改将不会更改映射中的结构值。您必须将修改后的值分配回地图。
如果该值是指向结构的指针,则可以通过存储在映射中的指针访问对结构的修改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句