Go语言数组去重

在使用Go语言的时候,碰到了需要对数组进行去重操作的问题。Java语言有Set集合这个数据结构,可以很方便的将数组转为集合,但是Go语言没有Set,如果仅仅是因为去重操作就手动实现一个Set太繁琐了。可以根据Go语言中的map的特性来简单实现一下,改进了一下,之前的有问题,感谢指正;使用了泛型,需要go1.18以上版本。如果你的代码中类型比较明确,可以把泛型换掉。

func main() {
    list := []string {"hello", "hello", "hello", "hello", "hello", "world"}
    list = removeRepeatElement(list)
    fmt.Println(list)
}

func removeRepeatElement[T comparable](list []T) []T {
    // 创建一个临时map用来存储数组元素
    temp := make(map[T]struct{})
    index := 0
    // 将元素放入map中
    for _, v := range list {
        temp[v] = struct{}{}
    }
    tempList := make([]T, len(temp))
    for key := range temp {
        tempList[index] = key
        index++
    }
    return tempList
}
// 输出:
// [hello]

这个是对字符串数组去重操作。可以根据需要的类型稍作修改即可。需要注意的是只支持可以作为map键的结构进行去重!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数组(array) 在GO语言中,数组是用于存储相同数据类型的集合,数组长度必须是一个常量表达式,且是一个非负数G...
    astarblog阅读 3,304评论 0 0
  • 数组、切片和映射 1.数组 对于数组的定义以及初始化,可以分为以下三种方式: 数组的循环变量,可以使用以下2种方式...
    洋葱er阅读 2,299评论 0 0
  • 有经验的程序员都知道,实际项目中很难遇到不需要存储和读取集合数据的情况。不论是读写数据库或文件,或者访问网络,都需...
    某尤阅读 1,675评论 0 0
  • 偶然和同事谈到面试的Javascript问题,其中基本上都会有一道问题就是数组去重,随着对于语言深入的学习,这道基...
    IloveData阅读 3,456评论 0 0
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,602评论 0 11

友情链接更多精彩内容