2012-08-24 39 views
6

Tại sao bản đồ in ra ngoài trật tự, và làm thế nào để tôi có được nó theo thứ tự?bản đồ golang in ra theo thứ tự

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

In ra:

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

bản sao có thể có của [Đơn hàng chuyển nhượng Google Go Lang] (http://stackoverflow.com/questions/11853396/google-go-lang-assignment-order) –

+7

Lưu ý rằng điều này cũng giống nhau đối với tất cả các bộ sưu tập dựa trên bảng băm trong mọi ngôn ngữ: quá trình băm mất thứ tự. –

+0

@dystroy: ngoại trừ cấu trúc dữ liệu bảng băm "đặt hàng" – newacct

Trả lời

14

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 
} 

(đa số là bị đánh cắp từ M. Summerfield của book)

đầu ra:

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 
5

Bản đồ không được sắp xếp để bạn có thể sử dụng một lát để sắp xếp bản đồ của mình. Cuốn sách "Lập trình trong Go" của Mark Summerfield giải thích điều này trên trang 204 và được khuyến khích cao.

Các vấn đề liên quan