go - struct 作为键类型的 golang 映射如何工作?
问题描述
我不知道为什么 Go 给出了以下结果。我认为 a1 和 a2 是两个不同的指针?
&{} !
代码
func main() {
a1 := &A{}
a2 := &A{}
a3 := &A{}
m2 := make(map[*A]string)
m2[a1] = "hello"
m2[a2] = "world"
m2[a3] = "!"
for k, v := range m2 {
fmt.Println(k, v)
}
}
type A struct {
}
解决方案
语言规范说:
指向不同的零大小变量的指针可能相等,也可能不相等。
推荐阅读
- forms - 如何在允许编辑 = 否的情况下粘贴到数据表表单中?
- javascript - 如何使用 JSFiddle 并分配字符串
- amazon-web-services - 从 Dynamo Db 中提取数据时,AWS Lambda 出现一秒延迟
- matplotlib - 如何仅标记某些 x-ticks matplotlib?
- java - 消费队列上的 Java RabbitMQ 竞争条件
- selenium - 如何在没有 div 链接的情况下通过图像跟踪链接?
- c - 能够在条件语句中时出现 C char 指针错误
- sql - 有没有办法以所需的格式加入这两个表?
- java - 如何将特定数据字段从 ArrayList 加载到某些 JTextFields?
- javascript - 如何获取对象属性列表数据