• 技术文章 >后端开发 >Golang

    golang的slice如何去重

    (*-*)浩(*-*)浩2019-12-28 09:55:53原创1439

    合并两个整型slice,返回没有重复元素的切片,有两种去重策略

    1. 通过双重循环来过滤重复元素(时间换空间) (推荐学习:go

    // 通过两重循环过滤重复元素
    func RemoveRepByLoop(slc []int) []int {
        result := []int{}  // 存放结果
        for i := range slc{
            flag := true
            for j := range result{
                if slc[i] == result[j] {
                    flag = false  // 存在重复元素,标识为false
                    break
                }
            }
            if flag {  // 标识为false,不添加进结果
                result = append(result, slc[i])
            }
        }
        return result
    }

    2. 通过字典来过滤(空间换时间)

    因为字典的主键唯一,所以可以用来判断元素是否重复

    // 通过map主键唯一的特性过滤重复元素
    func RemoveRepByMap(slc []int) []int {
        result := []int{}
        tempMap := map[int]byte{}  // 存放不重复主键
        for _, e := range slc{
            l := len(tempMap)
            tempMap[e] = 0
            if len(tempMap) != l{  // 加入map后,map长度变化,则元素不重复
                result = append(result, e)
            }
        }
        return result
    }

    ps : 这里为了节省内存,使用map[int]byte。 因为map的value并没有用到,所以什么类型都可以。

    以上就是golang的slice如何去重的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:golang
    上一篇:golang的hashmap怎么扩容 下一篇:golang的zap怎么使用
    PHP编程就业班

    相关文章推荐

    • golang检查文件是否存在的方法• golang主要开发什么?• golang 什么时候使用指针• golang 什么时候用锁

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网