以下代码是否能编译通过?

package main

import "fmt"

func main() {
    m := make(map[string]int)

    fmt.Println(&m["qcrao"])
}

答:不能,编译报错

.\main.go:8:15: invalid operation: cannot take address of m[“qcrao”] (map index expression of type int)

解析: 这个问题,相当于问:可以对 map 的元素直接取地址吗?

知识点:无法直接对 map 的 key 或 value 进行取址。如果通过其他 hack 的方式,例如 unsafe.Pointer 等获取到了 key 或 value 的地址,也不能长期持有,因为一旦发生扩容,key 和 value 的位置就会改变,之前保存的地址也就失效了。