Go Map

简介

映射是一种数据结构,用于存储一系列无序的键值对,能够基于键快速检索数据

内部实现(待完善)

映射的实现使用了散列表,因此每次迭代映射的时候顺序可能不一样

  1. 散列表中需要关注的两个数据结构

hmap
在这里插入图片描述
bucket
在这里插入图片描述
注意:
在字节数组中,键值是存放在一起的,目的是为了节省空间,多个键可以存储在同一个内存单元中,消除带来的空间浪费

两者的关系
在这里插入图片描述
Go语言哈希函数会将键进行哈希运算,得到唯一的值,并将求得的值分为高位和低位,其中低位用于寻找该键属于hmap中的哪一个bucket,高位用于寻找该bucket中哪一个key

  1. 加载因子

每种哈希表的都会有一个加载因子,数值超过加载因子就会为哈希表扩容
当插入的元素个数与桶个数的商达到6.5时,会产生一个新的buckets数组,将旧数组赋值到oldbucket中,只有当访问到具体的某个bucket的时候,才会把bucket中的数据转移到新的bucket中
在这里插入图片描述
这里并不会直接删除旧的bucket,而是把原来的引用去掉,利用垃圾回收机制清除内存

另外:
在映射中删除数据时,如果键或值是指针类型,则会被置为空,等待垃圾回收机制清楚内存,如果是值类型,则被清理相关内存,最后将该键的高位置对应数组索引置空

图文参考RyuGou

创建和初始化

  1. Make
dict:=make(map[string]int)
dict2:=make(map[string]string){"Red":"da1337","Orange":"#e95a22"}
  1. 使用映射字面量声明空映射
    映射的键可以是任何值,只要这个值可以用==运算符做比较,切片、函数以及包含切片的结构类型具有引用语义,不能作为映射的键,否则会编译出错
dict:=map[int][]string{}

使用映射

  1. 为映射赋值
colors:=map[string]string{}
colors["Red"]="#da1337"

可以通过声明一个未初始化的映射来创建一个值为nil的映射,nil映射不能用于存储键值对,否则会报错

var colors map[string]string
colors["Red"]="#da1337"
Runtime Error
  1. 从映射获取值并判断键是否存在
value,exists:=colors["Blue"]
if exists{
	fmt.Println(value)
}
  1. 使用range迭代映射
for key,value:=range colors{
	...
}

返回的是键值对

  1. 从映射中删除一项
delete(colors,"Coral")

在函数间传递映射

在函数间传递映射并不会制造出该映射的一个副本,跟传递切片类似,对这个映射做了修改时,所有对这个映射的引用都会察觉到这个修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
1. 智慧监狱概述 智慧监狱的建设背景基于监狱信息化的发展历程,从最初的数字化监狱到信息化监狱,最终发展到智慧监狱。智慧监狱强调管理的精细化、监管的一体化、改造的科学化以及办公的无纸化。政策上,自2017年以来,司法部连续发布了多项指导性文件,推动智慧监狱的建设。 2. 内在需求与挑战 智慧监狱的内在需求包括数据应用与共享的不足、安防系统的单一功能、IT架构的复杂性、信息安全建设的薄弱以及IT运维的人工依赖。这些挑战要求监狱系统进行改革,以实现数据的深度利用和业务的智能化。 3. 技术架构与设计 智慧监狱的技术架构包括统一门户、信息安全、综合运维、安防集成平台和大数据平台。设计上,智慧监狱采用云计算、物联网、大数据和人工智能等技术,实现资源的动态分配、业务的快速部署和安全的主动防护。 4. 数据治理与应用 监狱数据应用现状面临数据分散和共享不足的问题。智慧监狱通过构建数据共享交换体系、数据治理工具及服务,以及基于数据仓库的数据分析模型,提升了数据的利用效率和决策支持能力。 5. 安全与运维 智慧监狱的信息安全建设涵盖了大数据应用、安全管理区、业务区等多个层面,确保了数据的安全和系统的稳定运行。同时,综合运维平台的建立,实现了IT系统的统一管理和自动化运维,提高了运维效率和系统的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值