首页 > 解决方案 > 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 {
}

标签: gostruct

解决方案


语言规范

指向不同的零大小变量的指针可能相等,也可能不相等。


推荐阅读