首页  >  文章  >  后端开发  >  如何在 Go 切片或数组中查找唯一项?

如何在 Go 切片或数组中查找唯一项?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-01 04:16:27919浏览

How to Find Unique Items in a Go Slice or Array?

在切片或数组中查找唯一项

在 Go 中,维护切片或数组中的唯一项对于新手来说可能具有挑战性。本指南解决了这个问题,提供了手动比较方法和基于集合的替代方法。

手动比较方法

手动比较方法涉及循环数组和对照每个其他元素检查每个元素。如果发现重复项,则会跳过它。这是一个优化的示例:

<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
}

var uniqueVisits []visit
for v := range unique {
    uniqueVisits = append(uniqueVisits, v)
}

fmt.Println(uniqueVisits)</code>

基于集合的替代方案

Go 提供了可以用作集合的地图数据结构。具有访问类型的键和布尔类型的值的映射可以是维护唯一值的便捷方法。下面是一个示例:

<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 {
    if !unique[v] {
        unique[v] = true
    }
}

var uniqueVisits []visit
for v := range unique {
    uniqueVisits = append(uniqueVisits, v)
}

fmt.Println(uniqueVisits)</code>

输出

两种方法将输出相同的结果:

[visit{1 100} visit{2 2} visit{1 1}]

选择最适合您的方法具体实施要求。手动比较方法提供了对元素比较的细粒度控制,而基于集合的方法提供了简单和高效。

以上是如何在 Go 切片或数组中查找唯一项?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn