Dictionary 如何区分Golang中的两个自定义结构类型,它们的数据与map中的键相同?
1) 这样行吗?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
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