Bre*_*dan 1 dictionary pass-by-reference pass-by-value go
当我从Go中的地图中检索结构时,是否会获得该值的副本?或者我获得地图中的实际值?
例如,假设我有一个从字符串到结构的映射:
type quality struct {
goodness int
crunchiness int
}
cookies := make(map[string]quality)
cookies["nutrageous"] = quality{goodness: 3, crunchiness: 10}
Run Code Online (Sandbox Code Playgroud)
我想修改一个条目.
我可以指望返回的值与地图中的值相同吗?
c := cookies["nutrageous"]
c.goodness += 5
Run Code Online (Sandbox Code Playgroud)
或者我还必须返回并修改地图中的内容?
c := cookies["nutrageous"]
c.goodness += 5
cookies["nutrageous"] = c
Run Code Online (Sandbox Code Playgroud)
为地图编制索引会返回地图值的副本.如果map值是结构,则对返回的struct值的修改不会更改map中的struct值.您需要将修改后的值分配回地图.
如果值是指向结构的指针,则可以通过映射访问对结构的修改.
| 归档时间: |
|
| 查看次数: |
1247 次 |
| 最近记录: |