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

展会搭建设计案例网站网站建设与维护试题含答案

展会搭建设计案例网站,网站建设与维护试题含答案,百度浏览官网,网站前台建设Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。 然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。 现象 先看一段代码示例: package mainimport &q…

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])}
}
http://www.yayakq.cn/news/967149/

相关文章:

  • 公司网站怎么管理微网站方案怎么写
  • 链接制作网站用vs session做网站
  • 甘肃兰州做网站php精品源码
  • 淮安网站建设工作室潍坊做网站建设
  • 微信小说网站开发动漫做暧昧视频网站
  • 网站建设小程序湖南云南网站建设招商
  • 科技网站建设总结番禺网站开发技术
  • 做创意ppt网站个人网站空间多大合适
  • 网站建设一般是用哪个软件网站内链404 not found
  • 快速建立平台网站开发网站模板设计济南网络科技有限公司
  • linux网站开发软件网站制作 佛山
  • 网站底部导航设置网站后台培训
  • 常州住房和城乡建设局网站首页广州网站制作功能
  • 建设企业网站新闻开发的意义个人如何缴纳社保
  • wordpress 评论post成都关键词seo推广平台
  • 携程旅游网站建设的定位罗湖网站建设哪家好
  • 个人商城网站怎么做重庆建筑工程招聘信息网
  • 做网站开发平台网站内容怎么修改
  • 内销网站怎么做阿里云除了做网站还能用来干什么
  • 网站开发与设计入门网站建设方案书个人
  • 网站县区分站点建设重庆互联网企业
  • 临沂购物网站建设什么是搜索推广
  • html5网站开发教学中国最好的猎头公司排行榜
  • 网站界面设计的基本原则是什么做相册集什么网站
  • 四川省建设厅招投标网站舅舅建筑网
  • 网站建设东营集团网站设计思路
  • 济宁广告公司网站建设如何下载免费网页模板
  • 怎样在凡科网站做网页wordpress萨隆破解版
  • 新能源网站建设哪家好好的手机端网站模板下载安装
  • 怎样创建网站app深圳网站关键字优化