Go切片去掉重復元素


1.Go切片去掉重復元素

如果傳入的是string類型:

//slice去重
func removeRepByMap(slc []string) []string {
    result := []string{}         //存放返回的不重復切片
    tempMap := map[string]byte{} // 存放不重復主鍵
    for _, e := range slc {
        l := len(tempMap)
        tempMap[e] = 0 //當e存在於tempMap中時,再次添加是添加不進去的,,因為key不允許重復
        //如果上一行添加成功,那么長度發生變化且此時元素一定不重復
        if len(tempMap) != l { // 加入map后,map長度變化,則元素不重復
            result = append(result, e) //當元素不重復時,將元素添加到切片result中
        }
    }
    return result
}

如果傳入的是int類型:

//slice去重
func removeRepByMap(slc []int) []int {
    result := []int{}         //存放返回的不重復切片
    tempMap := map[int]byte{} // 存放不重復主鍵
    for _, e := range slc {
        l := len(tempMap)
        tempMap[e] = 0 //當e存在於tempMap中時,再次添加是添加不進去的,,因為key不允許重復
        //如果上一行添加成功,那么長度發生變化且此時元素一定不重復
        if len(tempMap) != l { // 加入map后,map長度變化,則元素不重復
            result = append(result, e) //當元素不重復時,將元素添加到切片result中
        }
    }
    return result
}

 當然如果傳入的是其它類型,把對應類型改掉即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM