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)
相关推荐
半桶水专家7 小时前
go语言中的结构体嵌入详解
开发语言·后端·golang
李迟11 小时前
Golang实践录:使用sqlx操作sqlite3数据库
数据库·golang·sqlite
007php00716 小时前
Git 操作偏门指南:常用和隐藏命令与问题解决
java·git·面试·职场和发展·golang·jenkins·php
源代码•宸17 小时前
goframe框架签到系统项目开发(每日签到添加积分和积分记录、获取当月最大连续签到天数、发放连续签到奖励积分、实现签到日历详情接口)
数据库·经验分享·redis·中间件·golang·dao·goframe
梦想的旅途217 小时前
企业微信外部群消息推送实战指南
java·golang·企业微信
古城小栈17 小时前
go-zero 从入门到实战 全指南(包的)
开发语言·后端·golang
Clarence Liu18 小时前
用 Go 从 100 亿个数中找到最小的 100 个数 —— 实战与原理
开发语言·后端·golang
007php00721 小时前
通过程序对接地图api展示旅游数据列表
java·数据库·面试·职场和发展·golang·php·旅游
L Jiawen1 天前
【Go · Gin】基础知识
开发语言·golang·gin
wadesir1 天前
Go语言中高效读取数据(详解io包的ReadAll函数用法)
开发语言·后端·golang