MST

星途 面试题库

面试题:Go语言中如何对Map的键值对按值进行升序排序

在Go语言中,给定一个map[string]int类型的映射,要求编写代码将其键值对按值进行升序排序,并输出排序后的结果。请详细说明思路并给出实现代码。
39.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 思路
    • 首先,Go语言的map本身是无序的,要对其按值排序,需要将map的键值对提取到一个切片中。
    • 然后,使用Go标准库中的sort包对这个切片按值进行排序。
    • 最后,遍历排序后的切片输出结果。
  2. 实现代码
package main

import (
    "fmt"
    "sort"
)

type kv struct {
    key string
    value int
}

func main() {
    m := map[string]int{
        "apple": 5,
        "banana": 3,
        "cherry": 7,
    }

    // 将map的键值对提取到切片中
    var data []kv
    for k, v := range m {
        data = append(data, kv{k, v})
    }

    // 按值升序排序
    sort.Slice(data, func(i, j int) bool {
        return data[i].value < data[j].value
    })

    // 输出排序后的结果
    for _, item := range data {
        fmt.Printf("Key: %s, Value: %d\n", item.key, item.value)
    }
}