第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

有效地對(duì)切片列表進(jìn)行排序

有效地對(duì)切片列表進(jìn)行排序

Go
呼喚遠(yuǎn)方 2022-07-18 15:45:28
我有一個(gè)函數(shù)可以從 map[string] 字符串中復(fù)制數(shù)據(jù)并從中進(jìn)行切片。功能如下:type Tags map[string]stringfunc createtraffic(tags []Tags) []interface{} {    IDs := make([]interface{}, len(tags))    for i := range tags {        id, err := strconv.ParseUint(tags[i]["id"], 10, 64)        if err != nil {            continue        }        IDs[i] = id    }    return IDs}現(xiàn)在我想按“id”的遞增順序?qū)?ID 進(jìn)行排序。我不確定是否應(yīng)該在這個(gè) for 循環(huán)之后對(duì)其進(jìn)行排序,或者因?yàn)槲乙呀?jīng)在地圖上循環(huán),所以我應(yīng)該在這個(gè)循環(huán)中進(jìn)行排序。我應(yīng)該選擇哪一個(gè)(地圖的長(zhǎng)度在 10K-20K 之間),我應(yīng)該使用哪種類型的排序?
查看完整描述

3 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

您最好的調(diào)用是IDs在從函數(shù)返回之前對(duì)切片進(jìn)行排序。正如cn007b指出的那樣,只需使用排序庫(kù)即可

sort.Slice(IDs, func(i, j int) bool { return IDs[i].(uint64) < IDs[j].(uint64) })


查看完整回答
反對(duì) 回復(fù) 2022-07-18
?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

在你的情況下,strconv.ParseUint你有價(jià)值uint64,所以最好有切片,[]uint64而不是[]interface{}因?yàn)樗菀着判颉?/p>

所以你可以做這樣的事情:


func createtraffic(tags []Tags) interface{} {

    IDs := make([]uint64, len(tags))

    for i := range tags {

        id, err := strconv.ParseUint(tags[i]["id"], 10, 64)

        if err != nil {

            continue

        }

        IDs[i] = id

    }


    sort.Slice(IDs, func(i, j int) bool { return IDs[i] < IDs[j] })


    return IDs

}

如果您仍然需要[]interface{},您可以執(zhí)行以下操作:


func createtraffic(tags []Tags) []interface{} {

    IDs := make([]interface{}, len(tags))

    for i := range tags {

        id, err := strconv.ParseUint(tags[i]["id"], 10, 64)

        if err != nil {

            continue

        }

        IDs[i] = id

    }


    sort.Slice(IDs, func(i, j int) bool { return IDs[i].(uint64) < IDs[j].(uint64) })


    return IDs

}

PS:這里我剛剛添加sort.Slice和更新了IDs類型。

因?yàn)檫@個(gè)關(guān)于排序的問題,我沒有改變?nèi)魏纹渌麞|西,但是有改進(jìn)的余地(循環(huán),返回類型,......),這超出了這個(gè)問題的范圍。


查看完整回答
反對(duì) 回復(fù) 2022-07-18
?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊

看看這篇文章https://golang.org/pkg/sort/?;阪I排序的示例聽起來(lái)是您嘗試對(duì)切片執(zhí)行的操作。然后調(diào)用排序的鍵類型,您將擁有由 Sort() 調(diào)用的 Less、Swap 和 Len 函數(shù)。這允許您按特定鍵排序。



查看完整回答
反對(duì) 回復(fù) 2022-07-18
  • 3 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)