簡而言之:無論地圖的類型如何,如何按排序的鍵順序遍歷地圖?我發(fā)現(xiàn)了一些相關(guān)的問題,最接近的一個表明不依賴reflect模塊就無法完成。這種理解是否正確?考慮這個 Go 代碼,它按照鍵的排序順序遍歷兩個不同類型的映射:mapOne := map[int]string { 1: "a", 2: "b", 3: "c",}keysOne := make([]int, 0, len(mapOne))for key, _ := range mapOne { keysOne = append(keysOne, key)}sort.Ints(keysOne)for _, key := range keysOne { value := mapOne[key] fmt.Println(key, value)}mapTwo := map[string]int { "a": 1, "b": 2, "c": 3,}keysTwo := make([]string, 0, len(mapTwo))for key, _ := range mapTwo { keysTwo = append(keysTwo, key)}sort.Strings(keysTwo)for _, key := range keysTwo { value := mapTwo[key] fmt.Println(key, value)}對于兩種不同的地圖類型,提取鍵然后對其進(jìn)行排序的邏輯是重復(fù)的。有什么辦法可以解決這個邏輯并避免重復(fù)?我在嘗試編寫接口以提供SortedKeys方法時陷入困境。特別是,的返回類型SortedKeys取決于地圖的類型,我不知道如何在 Go 中表達(dá)它。
1 回答

繁星coding
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個贊
我認(rèn)為告訴你需要的人reflect
是對的;不過這可能有點(diǎn)矯枉過正。我認(rèn)為這里的重復(fù)是可以接受的。
(或者,您可以實(shí)現(xiàn)自己的映射,該映射使用某種類型的鍵接口,但您最終仍需要創(chuàng)建滿足每個底層鍵類型接口的類型)
- 1 回答
- 0 關(guān)注
- 274 瀏覽
添加回答
舉報
0/150
提交
取消