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

Dictionary 如何区分Golang中的两个自定义结构类型,它们的数据与map中的键相同?,dictionary,go,struct,Dictionary,Go,Struct,1) 这样行吗? 2) Golang中是否有类似于Java的hashCode的东西?如果两个结构值具有相同的成员值,并且如果所有这些成员都是可比较的,那么这些结构是相等的。在您的示例中:s==t为true。结构值本身就是映射键。因此,在您的示例中,地图的末尾只有一个元素 更多关于可比性的信息: Go中没有与hashCode等价的代码 1) 这样行吗 当然可以。但您的地图将只包含一个条目 2) Go[…]中是否有类似于Java的哈希代码的东西 不。正如您正确指出的,Java在所有类上都有hash

1) 这样行吗?
2) Golang中是否有类似于Java的hashCode的东西?

如果两个结构值具有相同的成员值,并且如果所有这些成员都是可比较的,那么这些结构是相等的。在您的示例中:
s==t
true
。结构值本身就是映射键。因此,在您的示例中,地图的末尾只有一个元素

更多关于可比性的信息:

Go中没有与hashCode等价的代码

1) 这样行吗

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

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


不。

正如您正确指出的,Java在所有类上都有
hashCode
函数。但是,在Java中,还需要为类提供该函数的正确实现。您需要在此处提供自己的索引以进行反向映射,否则,是否可能有两个具有相同值的键?学生必须具有某种唯一标识符。我认为id是唯一的,我个人不会使用它。
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