golang地图打印错误 [英] golang map prints out of order
问题描述
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的 输出: Why is the map printing out of order, and how do I get it in to order? Prints out:
Code: (most of it stolen from M. Summerfield's book) output:
这篇关于golang地图打印错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
使用数组按号码访问项目:
0:jan
1:feb
地图未排序:
2 :feb
1:jan
通过排序的密钥列表访问项目::
1:jan
2:feb
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)
}
}
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("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
}
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