猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
循环包含一个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)}在操场上运行它。
0
0
0
小唯快跑啊
这就是我想出来的。它也可能适用于其他地图类型:它允许传入任何类型为 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}
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Go
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续