3 回答

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è)問題的范圍。

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ù)。這允許您按特定鍵排序。
- 3 回答
- 0 關(guān)注
- 164 瀏覽
添加回答
舉報(bào)