Go map排序的实现示例
更新时间:2023年12月25日 10:21:24 作者:metabit
map默认是无序的,不管是按照key还是按照value默认都不排序,本文主要介绍了Go map排序的实现示例,具有一定的参考价值,感兴趣的可以了解一下
1. 将key 或 value 单独组成其类型的切片或数组,进行排序
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
for _, key := range keys { fmt.Println(table[key]) }
2. 将key,value放入结构体,对结构体切片排序,既可以对key排序,又可以对value排序
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)
到此这篇关于Go map排序的实现示例的文章就介绍到这了,更多相关GO map排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Go Excelize API源码解析GetSheetFormatPr使用示例
这篇文章主要为大家介绍了Go Excelize API源码解析GetSheetFormatPr使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-08-08Centos下搭建golang环境及vim高亮Go关键字设置的方法
这篇文章先给大家详细介绍了在Centos下搭建golang环境的步骤,大家按照下面的方法就可以自己搭建golang环境,搭建完成后又给大家介绍了vim高亮Go关键字设置的方法,文中通过示例代码介绍的很详细,有需要的朋友们可以参考借鉴,下面来一起看看吧。2016-11-11Golang 实现Socket服务端和客户端使用TCP协议通讯
这篇文章主要介绍了Golang 实现Socket服务端和客户端使用TCP协议通讯,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-12-12
最新评论