Golang實習切片、結構體切片去重

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
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章