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

汕头公司做网站宝塔Linux面板清理建设的网站

汕头公司做网站,宝塔Linux面板清理建设的网站,wordpress文章添加按钮,模板建站是什么意思文章目录 前言现象原因如何顺序读取推荐阅读 前言 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/287392/

相关文章:

  • 在网站上做远程教育系统多少钱安徽阜阳网站建设公司
  • 门户网站建设的书籍php网站搭建
  • 广东建设中标网站来个网站你知道的2022年
  • 网站域名注册时间查询做毕业设计的参考文献网站
  • 华为云网站备案流程骄阳房地产网站
  • 网站建设推广服务合同商城网站如何做
  • 可以做生存分析的网站接单网个人接单
  • 昆明网站设计制作公司开一个淘宝店铺流程
  • 莒南县建设局网站html网站编辑器
  • 工程建设官方网站小程序商城首页设计
  • 网站策划选题wordpress 模板修改
  • 杭州 网站制作单页网站模板做seo
  • 网站建设销售好做嘛h5动画网站
  • 做图模板下载网站一个域名大概能卖多少钱
  • cms 多个网站导航网站策划
  • 怎么在自己电脑上搭建网站网站建设 推广人员
  • 自己制作网页的步骤wordpress优化版源码
  • 做网站经费百度搜索首页
  • 网站 建设运行情况报告网站建设的空间指的是
  • 没有网站 可以做cpawordpress修改注册页面
  • 浙江住房和建设网站广东品牌网站建设多少钱
  • 摄影网站采用照片做宣传 版权费是多少php网站怎么做自适应
  • 网站不能粘贴怎么做网站建设公司财务预算
  • 网站如何三合一seo网站营销推广
  • 同一个ip的网站做链接有用php网站模块
  • 工信部网站备案怎么登录中国服装设计网站
  • 用html做网站顺序如何做网站推广精
  • 杭州网站推广方案平台浙江建设工程信息网高工评选
  • 广州建站模板搭建西安旅游网站建设
  • 营销型网站建设iop建设企业网站企业网上银行登录官网下载