当我从 Go 中的映射中检索结构时,是否会得到该值的副本?还是获取 map 中的实际值?
例如,假设我有一个从字符串到结构的映射:
type quality struct {
goodness int
crunchiness int
}
cookies := make(map[string]quality)
cookies["nutrageous"] = quality{goodness: 3, crunchiness: 10}
我想修改一个条目。
我可以指望返回值与 map 中的值相同吗?
c := cookies["nutrageous"]
c.goodness += 5
或者我还必须返回并修改 map 中的内容吗?
c := cookies["nutrageous"]
c.goodness += 5
cookies["nutrageous"] = c
最佳答案
索引 map 返回 map 值的副本。如果映射值是结构,则对返回的结构值的修改不会更改映射中的结构值。您必须将修改后的值分配回 map 。
如果该值是指向结构的指针,则可以通过存储在映射中的指针访问对该结构的修改。
关于dictionary - golang map 是按值查找还是按引用查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38729760/