106 字
1 分钟
可以对 map 的元素取地址吗
无法对 map 的 key 或 value 进行取址。以下代码不能通过编译:
package main
import "fmt"
func main() { m := make(map[string]int)
fmt.Println(&m["qcrao"])}编译报错:
./main.go:8:14: cannot take the address of m["qcrao"]如果通过其他 hack 的方式,例如 unsafe.Pointer 等获取到了 key 或 value 的地址,也不能长期持有,因为一旦发生扩容,key 和 value 的位置就会改变,之前保存的地址也就失效了。
相关阅读
本主题其他内容
Go 原理与面试问答
本主题共 67 篇 ·
Go 语言 专题 →
深入 Go runtime 源码:GMP 调度器工作机制、map 扩容与渐进式迁移、channel 收发与阻塞唤醒、interface 底层结构与类型断言、反射原理与 GC 三色标记,逐一拆解高频面试考点。