Din*_*uti 4 performance dictionary go
我正在寻找一种有效的方法来检查 Golang 中是否存在某个值。我知道的方法是使用 for 循环/范围。有更好的方法来做同样的事情吗?
任何帮助,将不胜感激 :)
没有内置方法可以查明映射是否包含特定值。如果您需要此行为高效,请考虑使用额外的数据结构来支持它。
请注意,虽然 JavaMap提供了containsValue,但文档中说:
对于大多数 Map 接口的实现来说,此操作可能需要与地图大小成线性关系的时间。
因此,如果您需要 Java Map 的有效实现,您还需要提供一个。
“有效实施”的含义根据您映射的数据类型而变化。例如,如果值始终是唯一的,那么维护 amap[value]key就足够了)。如果不是,那么就需要一些更有原则的东西。
当你在 Go 中索引一个映射时,你会得到两个返回值;第二个(可选)是一个布尔值,指示该键是否存在。
\n如果该键不存在,则第一个值将是默认的零值。
\n直接在 if 语句中使用第二个返回值。
\nm := map[string]float64{"pi": 3.14}\nif v, found := m["pi"]; found {\n fmt.Println(v)\n}\nRun Code Online (Sandbox Code Playgroud)\n