据我所知,索引地图将返回映射值的副本。考虑到这一点,请考虑以下代码:
package main
import "fmt"
func main() {
m := map[string]int{"xxx": 100}
m["xxx"]++
fmt.Println(m["xxx"]) // prints 101
}上面的代码打印101,而我期望的是100。我的推理是,m["xxx"]返回分配给键"xxx" (即100)的值的副本,运算符++增加了这个值的副本,但这并不影响映射中存储的原始值--只有副本更改。
但是,考虑到通过将键放在括号内并使用=指定值(即m[key] = value),我们为映射键分配了一个值。然后,如果编译器将m["xxx"]++转换为m["xxx"] += 1 --这又相当于m["xxx"] = m["xxx"] + 1 --这将解释上述代码的结果。
我的问题是增量运算符(++)是否为逐一加法赋值(+= 1)的语法糖。否则,我错过了什么?
发布于 2022-02-17 20:25:01
https://stackoverflow.com/questions/71164283
复制相似问题