golang地图打印错误 [英] golang map prints out of order

查看:125
本文介绍了golang地图打印错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  package main $ b 

为什么地图打印不正确?
$ b import(
fmt


类型monthType struct {
无int
文本字符串
}

var months = map [int] string {
1:January,2:Fabruary,3:March,4:April,5:May 6:六月,
7:七月,8:八月,9:九月,10:十月,11:诺维伯,12:十二月 }

func main(){
for no,month:= range months {
fmt.Print(no)
fmt.Println( - + month )
}
}

打印出来:

  10-October 
7-July
1-January
9-September
4-April
5-May
2-Fabruary
12-December
11-Novenber
6-June
8-August
3-March


解决方案

代码:

  func DemoSortMap()(int,error){
fmt.Println(us一个数组通过数字访问项目:)
am:= [2] string {jan,feb}
for i,n:= range am {
fmt。 printf(%2d:%s\\\
,i,n)
}
fmt.Println(maps is non-sorted:)
mm:= map [int] string {2:feb,1:jan}
for i,n:= range mm {
fmt.Printf(%2d:%s\\\
,i,n)
}
fmt.Println(通过排序的键列表访问项目)
si:= make([] int,0,len(mm))
i:= range mm {
si = append(si,i)
}
sort.Ints(si)
for _,i:= range si {
fmt.Printf(%2d:%s\\\
,i,mm [i])
}

return 0,nil
}

(大部分是从M. Summerfield的

输出:

 使用数组按号码访问项目:
0:jan
1:feb
地图未排序:
2 :feb
1:jan
通过排序的密钥列表访问项目::
1:jan
2:feb


Why is the map printing out of order, and how do I get it in to order?

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)
    }
}

Prints out:

10-October
7-July
1-January
9-September
4-April
5-May
2-Fabruary
12-December
11-Novenber
6-June
8-August
3-March

Code:

func DemoSortMap() (int, error) {
    fmt.Println("use an array to access items by number:")
    am := [2]string{"jan", "feb"}
    for i, n := range am {
        fmt.Printf("%2d: %s\n", i, n)
    }
    fmt.Println("maps are non-sorted:")
    mm := map[int]string{2: "feb", 1: "jan"}
    for i, n := range mm {
        fmt.Printf("%2d: %s\n", i, n)
    }
    fmt.Println("access items via sorted list of keys::")
    si := make([]int, 0, len(mm))
    for i := range mm {
        si = append(si, i)
    }
    sort.Ints(si)
    for _, i := range si {
        fmt.Printf("%2d: %s\n", i, mm[i])
    }

    return 0, nil
}

(most of it stolen from M. Summerfield's book)

output:

use an array to access items by number:
 0: jan
 1: feb
maps are non-sorted:
 2: feb
 1: jan
access items via sorted list of keys::
 1: jan
 2: feb

这篇关于golang地图打印错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆