当前位置: 首页 > news >正文

公司官方网站推广策划免费制作邀请函的app

公司官方网站推广策划,免费制作邀请函的app,做个兼职网站设计,设计素材网排名文章目录 前言现象原因如何顺序读取推荐阅读 前言 Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。 然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。 现象 先看…

文章目录

  • 前言
  • 现象
  • 原因
  • 如何顺序读取
  • 推荐阅读

前言

Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。
然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。

现象

先看一段代码示例:

package mainimport "fmt"func main() {m := map[string]int{"apple":  1,"banana": 2,"orange": 3,}for k, v := range m {fmt.Printf("key=%s, value=%d\n", k, v)}
}

当我们多执行几次这段代码时,就会发现,输出的顺序是不同的。

原因

首先,Go 语言 map 的底层实现是哈希表,在进行插入时,会对 key 进行 hash 运算。这也就导致了数据不是按顺序存储的,和遍历的顺序也就会不一致。

第二,map 在扩容后,会发生 key 的搬迁,原来落在同一个 bucket 中的 key,搬迁后,有些 key 可能就到其他 bucket 了。

而遍历的过程,就是按顺序遍历 bucket,同时按顺序遍历 bucket 中的 key。

搬迁后,key 的位置发生了重大的变化,有些 key 被搬走了,有些 key 则原地不动。这样,遍历 map 的结果就不可能按原来的顺序了。

最后,也是最有意思的一点。

那如果说我已经初始化好了一个 map,并且不对这个 map 做任何操作,也就是不会发生扩容,那遍历顺序是固定的吗?

答:也不是。

Go 杜绝了这种做法,主要是担心程序员会在开发过程中依赖稳定的遍历顺序,因为这是不对的。

所以在遍历 map 时,并不是固定地从 0 号 bucket 开始遍历,每次都是从一个随机值序号的 bucket 开始遍历,并且是从这个 bucket 的一个随机序号的 cell 开始遍历。

如何顺序读取

如果希望按照特定顺序遍历 map,可以先将键或值存储到切片中,然后对切片进行排序,最后再遍历切片。

改造一下上面的代码,让它按顺序输出:

package mainimport ("fmt""sort"
)func main() {m := map[string]int{"apple":  1,"banana": 2,"orange": 3,}// 将 map 中的键存储到切片中keys := make([]string, 0, len(m))for k := range m {keys = append(keys, k)}// 对切片进行排序sort.Strings(keys)// 按照排序后的顺序遍历 mapfor _, k := range keys {fmt.Printf("key=%s, value=%d\n", k, m[k])}
}

在上面的代码中,首先将 map 中的键存储到一个切片中,然后对切片进行排序。
最后,按照排序后的顺序遍历 map。这样就可以按照特定顺序输出键值对了。

推荐阅读

  • Go 语言教程–介绍(一)
  • Go 语言教程–语言结构(二)
  • Go 语言教程–语言结构(三)
  • Go 语言教程–数据类型(四)
  • Go 语言教程–语言变量(五)
  • Go 语言教程–GO语言常量(六)
  • Go 语言教程–GO语言运算符(七)
  • Go 语言教程–GO条件和循环语句(八)
  • Go 语言教程–GO语言函数(九)
  • Go 语言教程–GO语言变量作用域(十)
  • Go 语言教程–GO语言数组(十一)
  • Go 语言教程–GO语言指针(十二)
  • Go 语言教程–GO语言结构体(十三)
  • Go 语言教程–GO语言切片(Slice)(十四)
  • Go 语言教程–Go 语言范围(Range)(十五)
  • Go 语言教程–Go 语言Map(集合)(十六)
  • Go 语言教程–Go 语言递归函数(十七)
  • Go 语言教程–Go 语言类型转换(十八)
  • Go 语言教程–Go 语言接口(十九)
  • Go 语言教程–Go 错误处理(二十)
  • Go 语言教程–Go 并发(二十一)
http://www.yayakq.cn/news/876289/

相关文章:

  • 中国顺德手机网站设计手机 做网站
  • 2024网站推广网站头部 标签
  • 苍溪网站建设广告设计公司起名字
  • 学校建设网站的结论wordpress取消自动分页
  • 猪八戒网站是做啥的河池个人网站开发公司
  • 国内老牌的室内设计网站网络培训课堂
  • 网站验收技术指标加强本单位政务网站建设
  • 在线销售型网站产品wordpress网页如何写
  • 中文网站的英文做国外网站需要多少钱
  • 创业做app哪个网站好我赢seo
  • 深圳推荐企业网站制作维护包装设计模板设计素材
  • 网站建设合同书福州制作公司网站
  • 网站建设公司有哪几家天涯网站建设路小学
  • 织梦网站首页怎么修改安全员证书查询网入口
  • 网站魔板大全公众号 网站开发
  • 什么是企业网站pv餐饮管理系统源码
  • 无锡网站公司电话如何让百度新闻收录网站文章
  • 建网站权威机构茌平网站建设价格
  • 使用cms快速搭建商业网站网站建设方案 pdf
  • 查询网站后台登陆地址企业qq
  • 网站建设企业的市场分析外汇返佣网站建设
  • wordpress不支持自定主题字体做网站优化多少钱
  • 网站制作河南太平洋建设官方网站
  • 自己做网站能宣传自己的产品吗网站怎么加关键词
  • 个人网站设计报告书WordPress修改评论者昵称
  • 营销型网站设计官网怎么优化电脑系统
  • Vs做的网站调试时如何适应网页搜索引擎推广实训
  • 一次性筷子网站建设淘宝客网站是怎么做的
  • 临沭网站建设linux服务器怎么做网站
  • 营销型网站建设 合肥网站建设和维护工作