2022-10-12:以下go语言代码输出什么?A:1;B:2;C:panic;D:不能编译。

package main

import "fmt"

func main() {
    m := map[string]int{"uno": 1}
    p := &m["uno"]
    *p = 2
    fmt.Println(m["uno"])
}

答案选D。编译报错invalid operation: cannot take address of m["uno"] (map index expression of type int)。 golang里面的map,当通过key获取到value时,这个value是不可寻址的,因为map 会进行动态扩容,当进行扩展后,map的value就会进行内存迁移,其地址发生变化,所以无法对这个value进行寻址。 在这里插入图片描述