循环包含一个map[int]*somepointer的interface{}

我必须处理大量带有 int 键的映射,其中包含指向不同数据类型的指针。

我需要一个函数(而不是每种映射类型 10 个函数)来遍历这些映射并获取最大和最小键值。


尚方宝剑之说
浏览 143回答 2
2回答

狐的传说

使用 Reflect 包对具有整数键和任意值类型的映射进行操作: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)}在操场上运行它。

小唯快跑啊

这就是我想出来的。它也可能适用于其他地图类型:它允许传入任何类型为 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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go