结构的golang图如何作为键类型工作?

时间:2018-05-17 06:19:12

标签: go struct

我不知道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 {
}

2 个答案:

答案 0 :(得分:7)

语言规范says

  

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

答案 1 :(得分:2)

func main() {
a1 := new(A)
a2 := new(A)//A{}
a3 := new(A)//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 {
}

以上代码打印出您需要的内容