首页 > 其他分享 >Go 快速入门指南 - 有序 Map

Go 快速入门指南 - 有序 Map

时间:2022-12-22 16:35:22浏览次数:37  
标签:Map 遍历 入门 index keys 顺序 Go 排序

概述

Map 的遍历是无序的,这意味着不能依赖遍历的键值顺序。如果想实现 Map 遍历时顺序永远一致, 一个折中的方案时预先给 Map 的  排序,然后根据排序后的键序列遍历 Map, 这样可以保证每次遍历顺序都是一样的。

例子

package main

import (
    "fmt"
    "sort"
)

func main() {
    var m = make(map[int]string)

    m[0] = "zero"
    m[1] = "one"
    m[2] = "two"

    keys := make([]int, len(m)) // 将所有的键放入一个切片中
    index := 0
    for k, _ := range m {
        keys[index] = k
        index++
    }

    sort.Ints(keys) // 将所有的键进行排序

    for i := 0; i < 5; i++ {
        for _, key := range keys { // 根据排序后的键遍历 Map
            fmt.Printf("key = %d, val = %s\n", key, m[key])
        }
        fmt.Printf("第 %d 次遍历完成\n", i+1)
    }
}

// $ go run main.go
// 输出如下 
/**
  key = 0, val = zero
  key = 1, val = one
  key = 2, val = two
  第 1 次遍历完成
  key = 0, val = zero
  key = 1, val = one
  key = 2, val = two
  第 2 次遍历完成
  key = 0, val = zero
  key = 1, val = one
  key = 2, val = two
  第 3 次遍历完成
  key = 0, val = zero
  key = 1, val = one
  key = 2, val = two
  第 4 次遍历完成
  key = 0, val = zero
  key = 1, val = one
  key = 2, val = two
  第 5 次遍历完成
*/

从输出的结果中可以看到,每次遍历的顺序都是一致的。

联系我

公众号

标签:Map,遍历,入门,index,keys,顺序,Go,排序
From: https://www.cnblogs.com/duanbiaowu/p/16998831.html

相关文章

  • Go 快速入门指南 - 变长参数和指针参数
    变长参数在函数的最后一个参数的数据类型之前加上省略号 ... ,表示该参数的数据类型是 变长类型,调用该函数时可以传递任意数量 (0-N) 的该类型的参数。一个函数......
  • Go 快速入门指南 - defer 函数
    概述一个 defer 语句就是一个普通的函数或方法调用。 defer 语句保证了不论是在正常情况下(return返回),还是非正常情况下(发生错误,程序终止),函数或方法都能够执......
  • java入门
    JAVAHelloWorld创建一个文件夹存放代码/java/code新建一个java文件文件后缀名为.javahello.java编写代码publicclassHelloWorld{ publicstaticvoidm......
  • django中间件三个了解的方法、 基于django中间件的功能设计、 cookie与session简介、
    目录django中间件三个了解的方法基于django中间件的功能设计cookie与session简介django操作cookiedjango操作cookiedjango操作sessiondjango中间件三个了解的方法1.proc......
  • GOCVHelper图像处理算法库实例整编
       GOCVHelper主要包含图像处理、图像增强和基础文件处理三个部分。由于前两个部分较具有通用性,而且我在不同项目中都进行了反复使用,为了进一步说明类库内容,这里反过来......
  • Go 快速入门指南 - 环境安装
    概述为了节省篇幅,笔者将常用的3种操作系统对应的安装教程汇总到了一起,读者可以直接选择对应内容阅读。Windows环境搭建下载1. 打开Go官网下载地址(https://go.......
  • Go-18 Golang结构体struct详解
    packagemainimport"fmt"//Golang中的结构体详解typenewIntint//自定义类型typemyInt=int//类型别名typezsIntinttypepersonstruct{ namestr......
  • Nmap扫描原理及用法详解
    一、主机发现1、主机发现原理使用Nmap进行主机发现时,主要是为了找到存活主机,方便我们进行后续测试。主机发现的原理和我们使用的ping命令类似,发送探测包到目标主机,如果收......
  • 将GOCVHelper推向opencv——关于thinning函数的探索
      所以第一步就是opencvopencv_contrib联合起来。通过gitee来下载,速度非常快。https://gitee.com/mirrors/opencv_contrib/repository/archive/master.zip 配置......
  • 1分钟入门angular动画效果animations,敲简单滴哟~~☺
     运行代码创建componentnggcanimate-test 然后在app.module.ts做如下引入 分别是下面两行,自行引入import{BrowserAnimationsModule}from'@angular/platform-browse......