美文网首页
为什么遍历Go-map是无序的

为什么遍历Go-map是无序的

作者: 斯嘎啦 | 来源:发表于2019-04-10 15:50 被阅读0次

问题抛出

直接上代码

package main

import (
    "log"
)

func main(){
    m := make(map[int]string)
    m[0] = "ttttt0"
    m[1] = "ttttt1"
    m[2] = "ttttt2"
    m[3] = "ttttt3"
    m[4] = "ttttt4"

    for key, value := range m{
        log.Printf("k:%v,v:%v\n", key,value)
    }
}

result:


image.png

从上面可以看出,对于每一次遍历结果都不相同。但是有一个规律,就是 从某个key开始遍历,如果结束再从头开始,为什么会出现这种现象呢?

for range 实现方法

汇编命令 go tool compile -S map.go >> t.S

image.png

mapinterinit 实现方法: /usr/local/go/src/runtime/map.go

思路来自:EDDYCJY

相关文章

  • 为什么遍历Go-map是无序的

    问题抛出 直接上代码 result: 从上面可以看出,对于每一次遍历结果都不相同。但是有一个规律,就是 从某个ke...

  • golang map遍历为什么是无序的?

    golang map遍历为什么是无序的? 遍历map map底层使用哈希表实现,在运行过程中会进行扩容,扩容后顺序...

  • 为什么遍历 Go map 是无序的?

    有的小伙伴没留意过 Go map 输出顺序,以为它是稳定的有序的;有的小伙伴知道是无序的,但却不知道为什么?有的却...

  • Swift 5.x Set 访问和修改

    1.遍历 Set 可以使用for-in遍历Set 因为Set是无序的, 如果要顺序遍历Set, 使用sorted(...

  • 访问和修改Set

    访问 Set 可以使用 For - In 遍历 Set 因为Set 是无序的,如果要顺序遍历 Set,使用 sor...

  • iOS绘图

    core graphics绘图 NSSet是无序的 NSSet使用NSEnumerator遍历 NSSet any...

  • 56 手写LRU缓存淘汰算法与HashMap如何降低Hash冲突

    HashMap底层是有序存放的吗?无序、散列存放遍历的时候从数组0开始遍历每个链表,遍历结果存储顺序不保证一致。如...

  • Swift集合类型-字典

    Dictionary由键值对组成,对比数组,字典是无序的,使用for循环遍历字典中的键值对也是无序的。 使用下标的...

  • JS实现排序算法

    冒泡排序 遍历数组,每次遍历将最大(or最小)的数推到最前面 选择排序 在无序区中选择最小的数,将其与无序区第一个...

  • iOS中的NSDictionary和NSMutableDicti

    NSDictionary基本用法 键值对个数 遍历 字典读写(无序) NSMutableDictionary

网友评论

      本文标题:为什么遍历Go-map是无序的

      本文链接:https://www.haomeiwen.com/subject/knuynftx.html