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进行寻址。