可以对 map 的元素取地址吗
无法对 map 的 key 或 value 进行取址。以下代码不能通过编译:
1
package main
2
3
import "fmt"
4
5
func main() {
6
m := make(map[string]int)
7
8
fmt.Println(&m["qcrao"])
9
}
Copied!
编译报错:
1
./main.go:8:14: cannot take the address of m["qcrao"]
Copied!
如果通过其他 hack 的方式,例如 unsafe.Pointer 等获取到了 key 或 value 的地址,也不能长期持有,因为一旦发生扩容,key 和 value 的位置就会改变,之前保存的地址也就失效了。
Copy link