我正在寻找一种有效的方法来检查Golang中是否存在值。我知道的方法是使用for循环/范围。还有更好的方法吗?
任何帮助将不胜感激:)
答案 0 :(得分:3)
没有内置方法可以确定地图是否包含特定值。如果您需要此行为有效,请考虑使用其他数据结构来支持它。
请注意,虽然Java的Map
提供了containsValue
,但documentation说:
对于Map接口的大多数实现,此操作可能需要地图大小的线性时间。
因此,如果您需要Java Map的有效实现,您还需要提供一个。
什么"有效的实施"表示根据您要映射的数据类型进行更改。例如,如果值始终是唯一的,那么保持map[value]key
就足够了。如果他们不是,那么需要更有原则性的东西。
答案 1 :(得分:0)
如果您有相当大的地图并想要优化价值检查,那么几乎要再添加一张地图。像map[valueType]int
。然后:
for k, v := range m {
values[v]++
}