Go map如何排序

1. 将key 或 value 单独组成其类型的切片或数组,进行排序

go 复制代码
package main

import (
	"fmt"
	"sort"
)

func main() {
	table := map[string]string{
		"hello": "hello",
		"world": "world",
		"a":     "a",
		"b":     "b",
		"c":     "c",
		"d":     "d",
	}

	var keys, values []string

	for k, v := range table {
		keys = append(keys, k)
		values = append(values, v)
	}

	sort.Slice(keys, func(i, j int) bool {
		if keys[i] < keys[j] {
			//keys[i], keys[j] = keys[j], keys[i]
			values[i], values[j] = values[j], values[i]
			return true
		}
		return false
	})

	fmt.Println(keys)
	fmt.Println(values)
}

可以根据有序的key,找到对应的value

go 复制代码
    for _, key := range keys {
         fmt.Println(table[key])
    }

2. 将key,value放入结构体,对结构体切片排序,既可以对key排序,又可以对value排序

go 复制代码
	type Entity struct {
		K string
		V string
	}
	
	table := map[string]string{
		"hello": "hello",
		"world": "world",
		"a":     "a",
		"b":     "b",
		"c":     "c",
		"d":     "d",
	}

	var entities []Entity
	
	for k, v := range table {
		entities = append(entities, Entity{k, v})
	}

	sort.Slice(entities, func(i, j int) bool {
		return entities[i].K < entities[j].K
	})

	fmt.Println(entities)
相关推荐
名字还没想好☜10 小时前
Go context.AfterFunc 实战(Go 1.21):context 一取消就自动跑清理,告别手写 goroutine 监听 Done
后端·golang·go
web守墓人10 小时前
【goed/ui】自定义组件设计思想篇
linux·windows·ui·golang
chenqianghqu2 天前
go语言SDK升级到1.27更新调试
golang
ttwuai2 天前
Go开源后台管理系统推荐:怎么先排除 Fork、镜像和同名项目?
golang
参.商.3 天前
【Day 53】76. 最小覆盖子串
leetcode·golang
传奇开心果编程3 天前
【Go入门练中学】第2课:条件与循环
后端·学习·golang
传奇开心果编程3 天前
【Go入门练中学】第1课:从零开始
后端·学习·golang
报错小能手3 天前
GO语言接口 泛型 错误处理
golang
蓝宝石的傻话4 天前
MiBee Eye 蜂眼:把闲置的 Linux 小板做成一台能进国标平台的摄像头
golang·rust
我不会起名字3224 天前
万字总结Golang入门项目
数据结构·经验分享·算法·golang·项目实战·复盘