在 Go 切片或数组中查找唯一项
在 Go 中处理数据时,可能需要仅提取唯一元素来自切片或数组。虽然 Python 为此提供了方便的构造(例如集合),但 Go 本身并不提供类似的内置功能。
考虑问题中提供的示例代码,其目的是从列表中查找唯一坐标包含重复项。该代码尝试通过迭代原始列表(已访问)和最初为空的唯一列表,使用反射将访问中的每个元素与唯一的所有元素进行比较来实现此目的。代码分析和错误
但是,代码包含几个问题:改进方案
下面介绍了一种遵循所需逻辑的简化且更高效的解决方案:<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } var unique []visit for _, v := range visited { skip := false for _, u := range unique { if v == u { skip = true break } } if !skip { unique = append(unique, v) } } fmt.Println(unique)</code>
使用 Map 的替代解决方案
或者,可以利用 Go 的 map[访问] bool 创建类似集合的结构并提取唯一元素,如下所示:<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } unique := map[visit]bool{} for _, v := range visited { unique[v] = true } fmt.Println(unique)</code>映射键代表唯一元素。要获得唯一访问值的切片,需要一个额外的步骤:
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } var unique []visit m := map[visit]bool{} for _, v := range visited { if !m[v] { m[v] = true unique = append(unique, v) } } fmt.Println(unique)</code>这些解决方案有效地找到 Go 切片或数组中的唯一元素,遵循问题陈述并在构建时提供有效的替代方案 -缺少设置功能。
以上是如何在 Go 切片或数组中查找唯一元素?的详细内容。更多信息请关注PHP中文网其他相关文章!