Golang中如何根据int类型的值对map进行排序

Golang中如何根据int类型的值对map进行排序 https://play.golang.org/p/JPOsCRX7ejW 我不确定我哪里做错了。结果本应是排序好的,但实际情况并非如此。

2 回复

更多关于Golang中如何根据int类型的值对map进行排序的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,map本身是无序的,无法直接根据键或值进行排序。要实现根据int类型的值对map进行排序,需要将map的键值对提取到切片中,然后使用sort.Slicesort.SliceStable函数对该切片进行排序。以下是示例代码:

package main

import (
	"fmt"
	"sort"
)

func main() {
	// 原始map
	m := map[string]int{
		"Alice": 30,
		"Bob":   25,
		"Eve":   35,
		"Dave":  20,
	}

	// 创建键值对切片
	type kv struct {
		Key   string
		Value int
	}
	var kvs []kv
	for k, v := range m {
		kvs = append(kvs, kv{k, v})
	}

	// 根据Value字段进行排序
	sort.Slice(kvs, func(i, j int) bool {
		return kvs[i].Value < kvs[j].Value
	})

	// 输出排序结果
	for _, kv := range kvs {
		fmt.Printf("%s: %d\n", kv.Key, kv.Value)
	}
}

如果希望根据键进行排序,只需将排序函数中的kvs[i].Valuekvs[j].Value替换为kvs[i].Keykvs[j].Key即可。

回到顶部