Go基础_1_23 map的遍历与排序

Tutorial: Go初级 Category: Go Published: 2026-04-07 13:58:26 Views: 21 Likes: 0 Comments: 0
package main

import (
    "fmt"
    "sort"
)

func main() {
    /*
        map的遍历:
            使用:for range

                数组,切片:index,value
                map:key,value
    */

    map1 := make(map[int]string)
    map1[1] = "红孩儿"
    map1[2] = "小钻风"
    map1[3] = "白骨精"
    map1[4] = "白素贞"
    map1[5] = "金角大王"
    map1[6] = "王二狗"

    // 1.遍历map
    for k, v := range map1 {
        fmt.Println(k, v) // 不一定按序输出
        // 3 白骨精
        // 4 白素贞
        // 5 金角大王
        // 6 王二狗
        // 1 红孩儿
        // 2 小钻风
    }

    fmt.Println("----------------------")
    for i := 1; i <= len(map1); i++ {
        fmt.Println(i, "--->", map1[i])
    }

    /*
        1.获取所有的key,-->切片/数组
        2.进行排序
        3.遍历key,--->map[key]
    */

    keys := make([]int, 0, len(map1))
    fmt.Println(keys) // []

    for k, _ := range map1 {
        keys = append(keys, k)
    }
    fmt.Println(keys) // [3 4 5 6 1 2]

    //冒泡排序,或者使用sort包下的排序方法
    sort.Ints(keys)
    fmt.Println(keys) // [1 2 3 4 5 6]

    for _, key := range keys {
        fmt.Println(key, map1[key])
    }

    s1 := []string{"Apple", "Windows", "Orange", "abc", "王二狗", "acd", "acc"}
    fmt.Println(s1) // [Apple Windows Orange abc 王二狗 acd acc]
    sort.Strings(s1)
    fmt.Println(s1) // [Apple Orange Windows abc acc acd 王二狗]
}