- 1
- 0
- 约3.29千字
- 约 5页
- 2026-10-12 发布于河北
- 举报
Go语言Map高频面试题及详细答案(实战版)
1.简单说说Go中map的底层结构?
map底层是哈希表,核心结构体是hmap,并不是直接的键值对数组,主要由几部分组成:
第一,count:记录当前map存储的键值对总数,len(map)就是读取这个字段;
第二,B:桶的数量指数,真正桶的数量是2^B,默认初始B=4,也就是16个桶;
第三,buckets:桶数组指针,每个桶是一个bmap结构体,一个桶固定最多存8个键值对;
第四,oldbuckets:扩容时的旧桶数组,扩容期间新旧桶共存,完成迁移后释放;
第五,nevacuate:扩容迁移进度标记,用于渐进式扩容;
第六,overflow:溢出桶指针,当单个桶8个位置存满后,会挂载溢出桶,解决哈希冲突。
整体存储逻辑:通过键的哈希值取余桶数量,定位到对应桶,再在桶内遍历匹配键,完成增删查改。
2.map的键可以是什么类型?为什么切片、结构体不能做键?
map的键必须是可比较类型,也就是支持==、!=判断的类型。
可以做键的类型:字符串、数字、布尔、指针、数组、结构体(所有字段都可比较)、接口类型。
不可以做键的类型:切片、map、函数、包含切片/map的结构体。
核心原因两点:
第一,map查找、去重都依赖键的等值比较,切片是引用类型,只能比较地址,不能比较底层数据,语法层面直接禁止比较;
您可能关注的文档
- GMAT考试题型分布及详细参考答案.docx
- GMAT全真模拟测试题(含详细答案解析).docx
- GMO生产管理考核试题及详细答案.docx
- GMP基础知识测试题(含详细答案解析).docx
- GMP基础知识考核试题(含详细答案解析).docx
- GMP基础知识培训试题及参考答案.docx
- GMP取样岗位考核试题及详细答案.docx
- GMP认证检查考核试题及详细参考答案.docx
- GMP认证考核试题及详细答案.docx
- GMP卫生管理培训考核试题及详细答案.docx
- 销售年终总结及明年计划:个人业绩漏斗复盘、客户分层经营与2027年业绩目标拆解示例.docx
- 美联储9月加息之后:政策路径、美元与全球资产的传导分析(兼谈“降息预期”的修正).docx
- 考勤管理制度.docx
- 病历书写内涵质量检查与缺陷评分标准细则.docx
- 班级家委会章程与常态运作.docx
- 班委竞选演讲稿写法与四篇范文:学习委员、生活委员、文体委员、班长的三分钟演讲.docx
- 留守儿童关爱保护及代理家长帮扶方案.docx
- 2027届秋招简历模板怎么排才过机筛:一名应届生的七版迭代与投递数据复盘.docx
- 2026年连锁烘焙品牌新店开业营销活动全案开业前蓄客三日爆发排期预算分配与引流转化测算.docx
- 固定资产全生命周期管理与折旧核算实施细则.docx
原创力文档

文档评论(0)