首页 > 其他分享 >Go 入门指南:8.5. map 的排序

Go 入门指南:8.5. map 的排序

时间:2024-09-19 18:35:26浏览次数:8  
标签:map 8.5 56 Value 34 Key Go 87

 

原创 吃个大西瓜 Coding Big Tree    2024年09月19日 08:00 云南

图片

map 默认是无序的,不管是按照 key 还是按照 value 默认都不排序(详见第 8.3 节)。

如果你想为 map 排序,需要将 key(或者 value)拷贝到一个切片,再对切片排序(使用 sort 包,详见第 7.6.6 节),然后可以使用切片的 for-range 方法打印出所有的 key 和 value。

下面有一个示例:

示例 8.6 sort_map.go:

// the telephone alphabet:
package main
import (
 "fmt"
 "sort"
)

var (
 barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
       "delta": 87, "echo": 56, "foxtrot": 12,
       "golf": 34, "hotel": 16, "indio": 87,
       "juliet": 65, "kili": 43, "lima": 98}
)

func main() {
 fmt.Println("unsorted:")
 for k, v := range barVal {
  fmt.Printf("Key: %v, Value: %v / ", k, v)
 }
 keys := make([]string, len(barVal))
 i := 0
 for k, _ := range barVal {
  keys[i] = k
  i++
 }
 sort.Strings(keys)
 fmt.Println()
 fmt.Println("sorted:")
 for _, k := range keys {
  fmt.Printf("Key: %v, Value: %v / ", k, barVal[k])
 }
}

输出结果:

unsorted:
Key: bravo, Value: 56 / Key: echo, Value: 56 / Key: indio, Value: 87 / Key: juliet, Value: 65 / Key: alpha, Value: 34 / Key: charlie, Value: 23 / Key: delta, Value: 87 / Key: foxtrot, Value: 12 / Key: golf, Value: 34 / Key: hotel, Value: 16 / Key: kili, Value: 43 / Key: lima, Value: 98 /
sorted:
Key: alpha, Value: 34 / Key: bravo, Value: 56 / Key: charlie, Value: 23 / Key: delta, Value: 87 / Key: echo, Value: 56 / Key: foxtrot, Value: 12 / Key: golf, Value: 34 / Key: hotel, Value: 16 / Key: indio, Value: 87 / Key: juliet, Value: 65 / Key: kili, Value: 43 / Key: lima, Value: 98 /

但是如果你想要一个排序的列表你最好使用结构体切片,这样会更有效:

type name struct {
 key string
 value int
}

文章来源

https://learnku.com/docs/the-way-to-go/the-sorting-of-85-map/3623

图片

公众号回复:

golang加群】加入golang开发者交流群

golang资料】获取golang面试刷题资料

 

golang153 golang · 目录 上一篇Go 入门指南:8.4. map 类型的切片 阅读 172   ​ 喜欢此内容的人还喜欢   Golang面试题:原子操作和锁     我常看的号 Coding Big Tree   不看的原因   字节出品:抖音前端开源框架,10万+用户不断孵化的产品     前端实验室   不看的原因   每日一模块:glom     Python小白养成记   不看的原因 写留言             Coding Big Tree     写留言 留言  

暂无留言

标签:map,8.5,56,Value,34,Key,Go,87
From: https://www.cnblogs.com/cheyunhua/p/18421132

相关文章

  • opencascade源码学习之HLRAlgo包 -HLRAlgo
    类HLRAlgo前言在给定的投影中,为了达到工业设计、图纸需要的精度,可以删除隐藏的线条。为此,隐藏线路移除组件提供两个算法:HLRBRep_Algo和HLRBRep_PolyAlgo。这些算法删除或指示线条,被表面所掩盖。对于给定的投影,他们,计算一组线特征对象被表示。它们也被使用,与提取工具结合使......
  • 完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法,亲测有效!!!
    完美解决Array方法(map/filter/reduce)不按预期工作的正确解决方法,亲测有效!!!亲测有效完美解决Array方法(map/filter/reduce)不按预期工作的正确解决方法,亲测有效!!!报错问题可能出现的原因解决思路解决方法1.确保回调函数正确返回值2.检查数组的数据类型3.使......
  • 【Go】Go语言中的数组基本语法与应用实战
    ✨✨欢迎大家来到景天科技苑✨✨......
  • Typora+picgo+jsDelivr实现免费图床
    Typora+picgo+github+jsDelivr实现免费图床需求typora中写markdown图片是保存在本地的,为了简化写博客时繁琐的插入图片步骤,直接使用typora+picgo将图片上传到云端,这样发博客就只要复制markdown即可步骤前期准备:github中创建一个仓库用于保存图片名字随便填就行1.下载picgo......
  • 使用go做一个微信机器人
    常见开发功能:好友管理:添加好友、删除好友、修改备注、创建标签、获取好友列表、搜索好友信息消息管理:发文本消息、图片消息、名片消息、动图表情、小程序、发文件、发送视频、发送URL链接群管理:自动创群、修改群名称、邀请新成员、踢群成员、获取群列表、发送邀请链接、获取群聊朋......
  • 浅谈解释型语言 PHP 和编译型语言 Go 特性
    浅谈解释型语言PHP和编译型语言Go特性分享人:zxy_coding时长:40min写在前面本次分享的目的旨在互相交流,欢迎会后大家多多讨论交流。不会花过多的时间在细节上,同时请各位大佬轻喷。在分享之前,请允许我简单的带大家温习下一些会提到的点:高级语言vs低级语言:这两者是一......
  • 基于django+vue古诗词鉴赏网站【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在中华文化的浩瀚星空中,古诗词犹如璀璨星辰,穿越时空的长河,照亮了无数文人墨客的心灵世界,也承载着中华民族深厚的文化底蕴与情感寄托。然而......
  • 基于django+vue购药管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗行业的快速发展和人们对健康意识的不断提升,药品的需求量急剧增加,购药管理成为医疗机构及零售药店运营中不可或缺的一环。传统的手......
  • 基于django+vue购物网【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和电子商务的日益普及,网络购物已成为人们日常生活中不可或缺的一部分。购物网站作为电子商务的核心平台,不仅极大......
  • Go语言grequests库并发请求的实战案例
    在当今快速发展的互联网时代,数据的获取和处理速度成为了衡量一个系统性能的重要标准。Go语言以其并发处理能力而闻名,而grequests库则为Go语言的HTTP请求提供了简洁易用的API。本文将通过一个实战案例,介绍如何使用Go语言的grequests库来实现高效的并发HTTP请求。1.引言在......