根据 Golang 中 hashmap 的值获取键的简单方法

给定一个 Golang 中的哈希图,它有一个键和一个值,检索给定值的键的最简单方法是什么?

例如,Ruby 等价物将是 key = hashMap.key(value)


月关宝盒
浏览 453回答 3
3回答

富国沪深

没有内置函数可以做到这一点;你必须自己做。下面是一个适用于 的示例函数,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}用法:key, ok := mapkey(hashMap, value)if !ok {  panic("value does not exist in map")}

拉风的咖菲猫

重要的问题是:您需要查找多少次值?如果您只需要执行一次,那么您可以遍历键、值对并保留与值匹配的键(或键)。如果您必须经常进行查找,那么我建议您制作另一个具有键值的映射(假设所有键都映射到唯一值),然后使用它进行查找。

慕运维8079593

我正在基于比特币的服务器上工作,并且有支付脚本的常量和字节码列表。在 C++ 版本中,它既有带有代码的标识符,又有另一个返回字符串版本的函数。因此,仅采用原始操作码作为字符串键和字节作为值,然后颠倒顺序实际上并没有太多额外的工作。唯一让我烦恼的是值上的重复键。但由于这些只是真假,重叠零和一,字符串切片的所有第一个索引都是数字和操作码,真值是第二个索引。每次迭代列表以识别要执行的脚本命令平均会花费 50% 的被测试地图元素。只有一个反向查找表要简单得多。在一个完整的块上执行脚本可能多达 10,000 次,因此节省内存并支付处理费用是没有意义的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go