为了账号安全,请及时绑定邮箱和手机立即绑定

golang:按排序的键顺序遍历任意地图

golang:按排序的键顺序遍历任意地图

Go
九州编程 2021-06-04 14:48:37
简而言之:无论地图的类型如何,如何按排序的键顺序遍历地图?我发现了一些相关的问题,最接近的一个表明不依赖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)}对于两种不同的地图类型,提取键然后对其进行排序的逻辑是重复的。有什么办法可以解决这个逻辑并避免重复?我在尝试编写接口以提供SortedKeys方法时陷入困境。特别是,的返回类型SortedKeys取决于地图的类型,我不知道如何在 Go 中表达它。
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

我认为告诉你需要的人reflect是对的;不过这可能有点矫枉过正。我认为这里的重复是可以接受的。

(或者,您可以实现自己的映射,该映射使用某种类型的键接口,但您最终仍需要创建满足每个底层键类型接口的类型)


查看完整回答
反对 回复 2021-06-07
  • 1 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信