获取密钥的简单方法取决于Golang中hashmap的值

hhh*_*hhh 3 key hashmap go

给定Golang中具有键和值的hashmap,在给定值的情况下检索键的最简单方法是什么?

例如Ruby等价物 key = hashMap[value]

Tim*_*per 9

这没有内置功能; 你必须自己做.下面是一个适用的示例函数,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)


Aka*_*all 6

重要的问题是:你需要多少次查看价值?

如果您只需要执行一次,那么您可以迭代键值对,并保留与值匹配的键(或键).

如果你不得不经常查找,那么我建议你制作另一张具有键的值,值相反(假设所有键都映射到唯一值),然后用它来查找.