代码之家  ›  专栏  ›  技术社区  ›  sofs1 Romain Manni-Bucau

如何区分Golang中的两种自定义结构类型,它们的数据与map中的键相同?

  •  0
  • sofs1 Romain Manni-Bucau  · 技术社区  · 5 年前
    type Student struct {
        id int,
        name string,
    }
    
    //If I create two structs, 
    s := Student{1, "jack"}
    t := Student{1, "jack"}
    
    m := make(map[Student]bool)
    
    m[s] = true
    m[t] = true
    

    1) 这样行吗? 2) Golang中有没有类似于Java的哈希代码?

    0 回复  |  直到 5 年前
        1
  •  2
  •   Burak Serdar    5 年前

    如果两个结构值具有相同的成员值,并且所有这些成员都具有可比性,则这些结构是相等的。在你的例子中: s==t true .Struct value本身就是映射键。所以在你的例子中,地图的最后只有一个元素。

    更多关于可比性的信息:

    https://golang.org/ref/spec#Comparison_operators

    这是不可比拟的 hashCode 在围棋中。

        2
  •  0
  •   Volker    5 年前

    1) 这样行吗?

    当然可以。但你的地图将只包含一个条目。

    2) Go[…]中是否有类似于Java的哈希代码的东西?