登录
首页 >  Golang >  Go问答

对两个映射进行迭代,保持输出顺序不变

来源:stackoverflow

时间:2024-03-02 11:03:25 302浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《对两个映射进行迭代,保持输出顺序不变》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我希望迭代 2 个不同的地图,并让它们并排输出,例如

foo --------- 酒吧动物园--------- car

问题源于无法正确使用 2 张地图,尽管我不必使用地图。索引的顺序并不重要,但键对值必须保持相同,因此在本例中,zoo 必须与 car 一起,但不一定必须紧邻 foo bar,

for k, z := range teama {
                    fmt.fprintln(w, k+" \t "+z)

                }
for k, z := range teamb {
                    fmt.fprintln(w, k+" \t "+z)

                }

但是这种方法的错误是它以如下块格式打印出所有行(每个映射有 5 个值,因此总共 10 行),而不是像我希望的那样并排打印。我怎样才能让它并排打印?不像下面的块

foo --- bar
zoo ------------ car

解决方案


将密钥从 teamb 预加载到数组中。然后在 teama 的范围循环内使用一个简单的计数器从数组中检索键并从 teamb 中检索相应的值

keys := make([]string, len(teamA))
i := 0
for k := range teamA {
                    keys[i] = k
                    i++
                }
i = 0
for k, z := range teamB {
                    kA := keys[i]
                    vA := teamA[k]
                    fmt.Fprintf(w, "%v\t%v\t%v\t%v", k, z, kA, vA)
                    i++
                }

参见https://play.golang.org/p/18Im2T3ZpCL
如果地图的大小不同,请不要忘记考虑到这一点。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《对两个映射进行迭代,保持输出顺序不变》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>