专栏首页Golang语言社区Golang 语言--map 用range遍历不能保证顺序输出

Golang 语言--map 用range遍历不能保证顺序输出

按照之前我对map的理解,map中的数据应该是有序二叉树的存储顺序,正常的遍历也应该是有序的遍历和输出,但实际试了一下,却发现并非如此,网上查了下,发现从Go1开始,遍历的起始节点就是随机了,当然随机到什么程度还不清楚。

build后,多次执行,每次输出的结果都不同。当然,用 fmt.Println("map: ", x) 输出同样是无序的结果

参考http://xhrwang.me/2014/12/25/golang-fundamentals-4-map-range.html,我理解为在range时为引用类型(slice,map,channel)创建索引,而map的索引是未被指定的,所以无序。

因此如果需要保证顺序输出,我是使用了slice。

关于golang中的map,还可以参阅https://blog.golang.org/go-maps-in-action

本文分享自微信公众号 - Golang语言社区(Golangweb)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Go中map数据类型3点小知识

    1、map数据类型初始化 两种方式:map[string]string{}或make(map[string]string) 2、未初始化的map是nil,它与一...

    李海彬
  • Go中map数据类型3点小知识

    1、map数据类型初始化 两种方式:map[string]string{}或make(map[string]string) 2、未初始化的map是nil,它与一...

    李海彬
  • Go-Maps

    语法汇总 前面介绍的array、slice都是顺序性列表,本节的map则是无序的。 这个map和C/C++/Java的map一样,在Python中称为字典/di...

    李海彬
  • 《coredump问题原理探究》windows版7.3节map

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/detai...

    血狼
  • Arcgis for JS之地图自适应调整

    概述:本节讲述的内容为当浏览器大小发生变化或者地图展示区域的大小发生变化时,地图的自适应调整。地图的自适应常见于以下几种情况:1、系统中有收缩或者全屏的按钮;2...

    lzugis
  • map和object相互转换的几种方法和对比

    从这点来看,beanutils比反射好用,它里面做了大量的转换工作,反射的方法更多需要你自己来处理。

    用户7634691
  • Go 语言学习之map

    在 Go 语言中,map 是一个具有键值对元素的无序集合,在这个集合中,键是唯一的,键对应的值可以通过键来读取、更新和删除。

    frankphper
  • C++ map 和 hashmap 区别

    1. stl map is an associative array where keys are stored in sorted order using b...

    用户7436765
  • java面试必知必会遍历map键值对的四种方式

    Map结构是一个键值对结构形式的集合,在平时的使用中也很常见,历史文章数据很早就写过使用map并发控制进行业务场景的处理,翻看历史文章就可找到。

    后端Coder
  • Basemap系列教程:使用shapefiles绘制地图

    译注:绘制地图时因为一些原因可能需要使用shapefile添加地图信息,比如很多软件中的关于中国的地图信息都不是很准确,当要明确标注中国边界信息时就会出问题。这...

    bugsuse

扫码关注云+社区

领取腾讯云代金券