相关疑难解决方法(0)

如何按顺序遍历golang中的地图?

请看下面我的地图

var romanNumeralDict map[int]string = map[int]string{
  1000: "M",
  900 : "CM",
  500 : "D",
  400 : "CD",
  100 : "C",
  90  : "XC",
  50  : "L",
  40  : "XL",
  10  : "X",
  9   : "IX",
  5   : "V",
  4   : "IV",
  1   : "I",
}
Run Code Online (Sandbox Code Playgroud)

我希望按照键的大小顺序遍历此映射

  for k, v := range romanNumeralDict {
    fmt.Println("k:", k, "v:", v)
  }
Run Code Online (Sandbox Code Playgroud)

然而,这打印出来

k: 1000 v: M
k: 40 v: XL
k: 5 v: V
k: 4 v: IV
k: 900 v: CM
k: …
Run Code Online (Sandbox Code Playgroud)

go

29
推荐指数
2
解决办法
4万
查看次数

为什么Go不能按插入顺序迭代地图?

我有一个导航栏作为地图:

var navbar = map[string]navbarTab{
}
Run Code Online (Sandbox Code Playgroud)

哪里navbarTab有各种属性,儿童用品等.当我尝试渲染导航栏(带for tabKey := range navbar)时,它以随机顺序显示.我知道range它在运行时会随机排序,但似乎无法获得有序的键列表或迭代插入顺序.

游乐场链接在这里:http://play.golang.org/p/nSL1zhadg5虽然它似乎没有表现出相同的行为.

如何在不破坏插入顺序的情况下迭代此地图?

dictionary go

10
推荐指数
2
解决办法
5734
查看次数

golang地图打印乱序

为什么地图打印乱序,如何按顺序打印?

package main

import (
    "fmt"
)

type monthsType struct {
    no   int
    text string
}

var months = map[int]string{
    1:"January", 2:"Fabruary", 3:"March", 4:"April", 5:"May", 6:"June",
    7:"July", 8:"August", 9:"September", 10:"October", 11:"Novenber", 12:"December",
}

func main(){
    for no, month := range months {
        fmt.Print(no)
        fmt.Println("-" + month)
    }
}
Run Code Online (Sandbox Code Playgroud)

打印出来:

10-October
7-July
1-January
9-September
4-April
5-May
2-Fabruary
12-December
11-Novenber
6-June
8-August
3-March
Run Code Online (Sandbox Code Playgroud)

map go

8
推荐指数
2
解决办法
2万
查看次数

按顺序循环映射

我正在寻找一种确定Go map的有序范围.

Golang规范说明如下:

未指定地图上的迭代顺序,并且不保证从一次迭代到下一次迭代是相同的.如果在迭代期间删除了尚未到达的映射条目,则不会生成相应的迭代值.如果在迭代期间创建了映射条目,则可以在迭代期间生成该条目,或者可以跳过该条目.对于创建的每个条目以及从一次迭代到下一次迭代,选择可能不同.如果映射为nil,则迭代次数为0.

我在StackOverflow和Google上找到的所有内容都是(imho)我不喜欢的解决方法.

有没有一种可靠的方法来迭代地图并按照它们插入的顺序检索项目?

我发现的解决方案是:

  • 在两个单独的切片中跟踪键和值:听起来像"不要使用地图",失去了使用地图的所有优点.

  • 使用映射但跟踪不同切片中的密钥:这意味着数据重复可能导致数据不对齐,并最终可能带来大量错误和痛苦的调试.

你有什么建议?


编辑以响应可能的重复标记.

我的问题和提供的问题(这个问题,但也是这个问题)之间存在细微的差别,这两个问题都要求在按键字典顺序之后循环遍历地图; 相反,我特别问过:

有没有一种可靠的方法来迭代地图并按照它们插入的顺序检索项目?

这不是词典,因此不同于@gramme.ninja问题:

如何让键按顺序/排序地图,以便键按顺序排列并且值对应?

dictionary loops hashmap go for-range

3
推荐指数
1
解决办法
1795
查看次数

如何反转golang地图中的项目顺序?

我是golang的新手,我想在这样的地图中反转对的出现顺序,以便最后一对出现:

mapA := map[string]int {
    "cat": 5,
    "dog": 2,
    "fish": 3 ,
}


fmt.Println(mapA)


map[cat:5 dog:2 fish:3]
Run Code Online (Sandbox Code Playgroud)

生成的地图应该像:

map[fish:3 dog:2 cat:5]
Run Code Online (Sandbox Code Playgroud)

它可以是具有相同项目但是顺序的新mapB.

我怎样才能做到这一点?

go

-1
推荐指数
1
解决办法
100
查看次数

标签 统计

go ×5

dictionary ×2

for-range ×1

hashmap ×1

loops ×1

map ×1