您好,登錄后才能下訂單哦!
本文以go語(yǔ)言中的slice為例,為大家分析go語(yǔ)言中實(shí)現(xiàn)slice去重的方法。閱讀完整文相信大家對(duì)go語(yǔ)言中實(shí)現(xiàn)slice去重的方法有了一定的認(rèn)識(shí)。
合并兩個(gè)整型slice,返回沒(méi)有重復(fù)元素的切片,有兩種去重策略
1. 通過(guò)雙重循環(huán)來(lái)過(guò)濾重復(fù)元素(時(shí)間換空間)
// 通過(guò)兩重循環(huán)過(guò)濾重復(fù)元素 func RemoveRepByLoop(slc []int) []int { result := []int{} // 存放結(jié)果 for i := range slc{ flag := true for j := range result{ if slc[i] == result[j] { flag = false // 存在重復(fù)元素,標(biāo)識(shí)為false break } } if flag { // 標(biāo)識(shí)為false,不添加進(jìn)結(jié)果 result = append(result, slc[i]) } } return result }
2. 通過(guò)字典來(lái)過(guò)濾(空間換時(shí)間)
因?yàn)樽值涞闹麈I唯一,所以可以用來(lái)判斷元素是否重復(fù)
// 通過(guò)map主鍵唯一的特性過(guò)濾重復(fù)元素 func RemoveRepByMap(slc []int) []int { result := []int{} tempMap := map[int]byte{} // 存放不重復(fù)主鍵 for _, e := range slc{ l := len(tempMap) tempMap[e] = 0 if len(tempMap) != l{ // 加入map后,map長(zhǎng)度變化,則元素不重復(fù) result = append(result, e) } } return result }
ps : 這里為了節(jié)省內(nèi)存,使用map[int]byte。 因?yàn)閙ap的value并沒(méi)有用到,所以什么類(lèi)型都可以。
以上就是go語(yǔ)言中實(shí)現(xiàn)slice去重的方法介紹,詳細(xì)使用情況還得要大家自己使用過(guò)才能知道具體要領(lǐng)。如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。