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

Go 快速入门指南 - 有序 Map

时间:2022-12-24 18:37:32浏览次数:36  
标签:Map 遍历 入门 val two zero key 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 次遍历完成
*/

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

Go 快速入门指南 - 有序 Map_Go

标签:Map,遍历,入门,val,two,zero,key,Go
From: https://blog.51cto.com/u_15915979/5967426

相关文章

  • Go 快速入门指南 - make 和 new
    概述​​new()​​ 函数为数据类型T分配一块内存,初始化为类型T的零值,返回类型为指向数据的指针,可以用于所有数据类型。​​make()​​​ 函数除了为数据类型T分配内......
  • Go 快速入门指南 - 变长参数和指针参数
    变长参数在函数的最后一个参数的数据类型之前加上省略号 ​​...​​​ ,表示该参数的数据类型是 ​​变长类型​​​,调用该函数时可以传递任意数量 ​​(0-N)​​......
  • Go 快速入门指南 - defer 函数
    概述一个 ​​defer​​ 语句就是一个普通的函数或方法调用。 ​​defer​​ 语句保证了不论是在正常情况下(return返回),还是非正常情况下(发生错误,程序终止),函数......
  • Go 快速入门指南 - panic/recover 函数
    panic​​panic​​​ 会终止程序并退出,因此只有在发生严重的错误时才会使用 ​​panic​​。例子主动触发packagemainfuncmain(){panic("someerror...")}//$go......
  • Go 快速入门指南 - 结构体
    概述​​结构体​​​ 是将零个或多个字段(变量)组合在一起的复合数据类型,类似于面向对象语言中的 ​​对象​​。结构体以及其字段都使用 可见性 规则。语法规则type......
  • Go 快速入门指南 - 嵌套结构体
    概述Go支持将多个结构体通过嵌套的方式,组成一个大的结构体,降低了单个结构体复杂度,同时提高了结构体之间组合的灵活性。例子为了省略篇幅,本小节只使用 ​​字面量​​​ ......
  • Go 快速入门指南 - 函数
    概述​​函数​​ 是将一个或者一类问题包装为一个代码块,可以被多次调用,提高代码重用性。Go函数中声明、定义、参数、返回值这些基础概念,和其他编程语言中的一致,这里不再......
  • Go 快速入门指南 - init 函数
    概述​​init()函数​​ 是一个特殊的函数,一般称为初始化函数,不能被调用。 在每个文件里面,当程序启动或者文件被作为包引用的时候,init()函数就会自动执行,一般用来做一......
  • Go 快速入门指南 - 接口和方法
    接口Go接口是隐式实现。 对于一个数据类型,无需声明它实现了哪些接口,只需要实现接口必需的方法即可。当然了,存在一个小问题就是:我们可能无意间实现了某个接口:),所以 ​......
  • Go 快速入门指南 - 判断是否实现接口
    判断是否实现接口Go里面没有 ​​implements​​ 关键字来判断一个结构体(对象)是否实现了某个接口, 要实现类似的功能,需要用到 ​​类型断言​​。类型断言//判断......