给定Golang中具有键和值的hashmap,在给定值的情况下检索键的最简单方法是什么?
例如Ruby等价物
key = hashMap[value]
这没有内置功能; 你必须自己做.下面是一个适用的示例函数,map[string]int您可以调整其他地图类型:
func mapkey(m map[string]int, value int) (key string, ok bool) {
for k, v := range m {
if v == value {
key = k
ok = true
return
}
}
return
}
Run Code Online (Sandbox Code Playgroud)
用法:
key, ok := mapkey(hashMap, value)
if !ok {
panic("value does not exist in map")
}
Run Code Online (Sandbox Code Playgroud)
重要的问题是:你需要多少次查看价值?
如果您只需要执行一次,那么您可以迭代键值对,并保留与值匹配的键(或键).
如果你不得不经常查找,那么我建议你制作另一张具有键的值,值相反(假设所有键都映射到唯一值),然后用它来查找.