2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
使用 Reflect 包對(duì)具有整數(shù)鍵和任意值類型的映射進(jìn)行操作:
func getMaxKey(inout interface{}) int {
keys := reflect.ValueOf(inout).MapKeys()
if len(keys) == 0 {
return 0
}
max := keys[0].Int()
for _, key := range keys[1:] {
n := key.Int()
if n > max {
max = n
}
}
return int(max)
}

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
這就是我想出來(lái)的。它也可能適用于其他地圖類型:
它允許傳入任何類型為 map[int]*somepointer 的映射
不需要類型斷言(在本例中)
-
func getMaxKey(inout interface{}) int {
? ? auxMap:= make(map[int]string)
? ? body, _ := json.Marshal(inout)
? ? ? ? json.Unmarshal(body, &auxMap)
? ? maxKey := 0
? ? ? ? for key,_ := range auxMap {
? ? ? ? if key > maxKey {
? ? ? ? ? ? maxKey = key
? ? ? ? }
? ? }
? ? return maxKey
}
func getMinKey(inout interface{}) int {
? ? auxMap:= make(map[int]string)
? ? body, _ := json.Marshal(inout)
? ? ? ? json.Unmarshal(body, &auxMap)
? ? minKey := 0
? ? ? ? for key,_ := range auxMap {
? ? ? ? if key < minKey || minKey == 0 {
? ? ? ? ? ? minKey = key
? ? ? ? }
? ? }
? ? return minKey
}
- 2 回答
- 0 關(guān)注
- 187 瀏覽
添加回答
舉報(bào)