河南科技学院石臼墙话板青春志

Golang实习切片、结构体切片去重

2022-10-17  本文已影响0人  胡小毛

string切片去重


// removeRepeatElement 去除slice中相同的元素
func removeRepeatElement(slc []string) []string {
    result := []string{}         //存放返回的不重复切片
    tempMap := map[string]byte{} // 存放不重复主键
    for _, e := range slc {
        l := len(tempMap)
        //当e存在于tempMap中时,再次添加是添加不进去的,因为key不允许重复
        tempMap[e] = 0
        //如果上一行添加成功,那么长度发生变化且此时元素一定不重复
        if len(tempMap) != l { // 加入map后,map长度变化,则元素不重复
            result = append(result, e) //当元素不重复时,将元素添加到切片result中
        }
    }
    return result
}

结构体切片去重

// RemoveRepByMap 通过map主键唯一的特性过滤重复元素
// 结构体切片去重
func RemoveRepByMap(slc []*types.SeriesRes) []*types.SeriesRes {
    resultMap := make(map[string]*types.SeriesRes, len(slc))
    for _, v := range slc {
        resultMap[v.SeriesId] = v
    }
    var result []*types.SeriesRes
    for _, v := range resultMap {
        result = append(result, v)
    }
    return result
}
上一篇下一篇

猜你喜欢

热点阅读