56_Go基础_1_23 map的遍历与排序

 1 package main
 2 
 3 import (
 4     "fmt"
 5     "sort"
 6 )
 7 
 8 func main() {
 9     /*
10         map的遍历:
11             使用:for range
12 
13                 数组,切片:index,value
14                 map:key,value
15     */
16 
17     map1 := make(map[int]string)
18     map1[1] = "红孩儿"
19     map1[2] = "小钻风"
20     map1[3] = "白骨精"
21     map1[4] = "白素贞"
22     map1[5] = "金角大王"
23     map1[6] = "王二狗"
24 
25     // 1.遍历map
26     for k, v := range map1 {
27         fmt.Println(k, v) // 不一定按序输出
28         // 3 白骨精
29         // 4 白素贞
30         // 5 金角大王
31         // 6 王二狗
32         // 1 红孩儿
33         // 2 小钻风
34     }
35 
36     fmt.Println("----------------------")
37     for i := 1; i <= len(map1); i++ {
38         fmt.Println(i, "--->", map1[i])
39     }
40 
41     /*
42         1.获取所有的key,-->切片/数组
43         2.进行排序
44         3.遍历key,--->map[key]
45     */
46 
47     keys := make([]int, 0, len(map1))
48     fmt.Println(keys) // []
49 
50     for k, _ := range map1 {
51         keys = append(keys, k)
52     }
53     fmt.Println(keys) // [3 4 5 6 1 2]
54 
55     //冒泡排序,或者使用sort包下的排序方法
56     sort.Ints(keys)
57     fmt.Println(keys) // [1 2 3 4 5 6]
58 
59     for _, key := range keys {
60         fmt.Println(key, map1[key])
61     }
62 
63     s1 := []string{"Apple", "Windows", "Orange", "abc", "王二狗", "acd", "acc"}
64     fmt.Println(s1) // [Apple Windows Orange abc 王二狗 acd acc]
65     sort.Strings(s1)
66     fmt.Println(s1) // [Apple Orange Windows abc acc acd 王二狗]
67 }