Go语言映射内部怎么实现及基础功能有哪些


这篇文章主要介绍“Go语言映射内部怎么实现及基础功能有哪些”,在日常操作中,相信很多人在Go语言映射内部怎么实现及基础功能有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言映射内部怎么实现及基础功能有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!映射是一种数据结构,是用于存储一系列无序的键值对。类比Java里的Map,Python里的字典,可以理解为以哈希值做索引,期望索引可以在一定的连续内存范围内的类似数组的数据结构。映射里基于键来存储值。映射功能强大的地方是,能够基于键快速检索数据。键就像索引一样,指向与该键关联的值。映射是一个集合,可以使用类似处理数组和切片的方式迭代映射中的元素。但映射是无序的集合,无序的原因是映射的实现使用了散列表.映射的散列表包含一组桶。在存储、删除或者查找键值对的时候,所有操作都要先选择一个桶。把操作映射时指定的键传给映射的散列函数,就能选中对应的桶。这个散列函数的目的是生成一个索引,这个索引最终将键值对分布到所有可用的桶里。对 Go 语言的映射来说,生成的散列键的一部分,具体来说是低位(LOB),被用来选择桶。桶的内部实现。映射使用两个数据结构来存储数据,第一个是数组,内部存储用于选择桶的散列键的高八位值。用于区分每个键值对要存在桶里的那一项。第二个是字节数组,用于存储键值对。该字节数组先依次存储了这个桶里所有的键,之后依次存储了这个桶里所有的值。实现这种键值对的存储方式目的在于减少每个桶所需的内存。映射存储的增加,索引分布越均匀,访问键值对的速度就越快,随着映射存储的增加,索引分布越均匀,访问键值对的速度就越快。映射通过合理数量的桶来平衡键值对的分布Go 语言中有很多种方法可以创建并初始化映射,可以使用内置的make 函数,也可以使用映射字面量。创建映射时,更常用的方法是使用映射字面量。映射的初始长度会根据初始化时指定的键值对的数量来确定。映射的键可以是任何值。这个值的类型可以是内置的类型,也可以是结构类型,只要这个值可以使用==运算符做比较切片、函数以及包含切片的结构类型由于具有引用语义,不能作为映射的键,使用这些类型会造成编译错误声明一个存储字符串切片的映射键值对赋值给映射,是通过指定适当类型的键并给这个键赋一个值来完成的为映射赋值可以通过声明一个未初始化的映射来创建一个值为nil的映射,不能用于存储键值对.从映射取值时有两个选择:第一个选择是免费云主机域名,可以同时获得值,以及一个表示这个键是否存在的标志,从映射获取值并判断键是否存在另一个选择是,只返回键对应的值,然后通过判断这个值是不是零值来确定键是否存在从映射获取值,并通过该值判断键是否存在在Go语言里,通过键来索引映射时,即便这个键不存在也总会返回一个值。在这种情况下,返回的是该值对应的类型的零值迭代映射里的所有值和迭代数组或切片一样,使用关键字 range使用range 迭代映射想把一个键值对从映射里删除,就使用内置的delete 函数从映射中删除一项在函数间传递映射并不会制造出该映射的一个副本。实际上,当传递映射给一个函数,并对这个映射做了修改时,所有对这个映射的引用都会察觉到这个修改,这个特性和切片类似,保证可以用很小的成本来复制映射映射的增长没有容量或者任何限制。同时内置函数 len可以用来获取切片或者映射的长度。但是内置函数 cap只能用于切片。到此,关于“Go语言映射内部怎么实现及基础功能有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: Python怎么用Gradio与EasyOCR构建在线识别文本的Web应用

本篇内容介绍了“Python怎么用Gradio与EasyOCR构建在线识别文本的Web应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Gradio是一个开源的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/17 17:47
Next 07/17 17:48

相关推荐