2.1　概述　2.2　词法和语法分析　2.3　类型检查　2.4　中间代码生成　2.5　机器码生成　2.6　总结　3.1　数组　3.2　切片　3.3　哈希表　3.4　字符串　4.1　函数调用　4.2　接口　4.3　反射　5.1　for　和range　5.2　select　5.3　defer　5.4　panic　和recover　5.5　make　和new　6.1　上下文　Context　6.2　同步原语与锁　6.3　定时器　6.4　Channel　6.5　调度器　6.6　网络轮询器　6.7　系统监控　7.1　内存分配器　7.2　垃圾收集器　7.3　栈内存管理　8.1　插件系统　8.2　代码生成　9.1　JSON　9.2　HTTP　9.3　数据库　3.3　哈希表　这一节会介绍　Go　语言中的另一个集合元素　—　哈希,也就是　Map　的实现原理;哈希表是除了数组之外,最常见的数据结构,几乎所有的语言都会有数组和哈希表这两种集合元素,有的语言将数组实现成列表,有的语言将哈希表称作结构体或者字典,但是它们是两种设计集合元素的思路,数组用于表示元素的序列,而哈希表示的是键值对之间映射关系,只是不同语言的叫法和实现稍微有些不同。　哈希表　1　是一种古老的数据结构,在1953　年就有人使用拉链法实现了哈希表,它能够根据键(Key)直接访问内存中的存储位置,也就是说我们能够直接通过键找到该键对应的一个值。　3.3.1　设计原理　哈希表是计算机科学中的最重要数据结构之一,这不仅因为它　O(1)　的读写性能非常优秀,还因为它提供了键值之间的映射。想要实现一个性能优异的哈希表,需要注意两个关键点　——　哈希函数和冲突解决方法。　哈希函数　实现哈希表的关键点在于如何选择哈希函数,哈希函数的选择在很大程度上能够决定哈希表的读写性能,在理想情况下,哈希函数应该能够将不同键映射到不同的索引上,这要求　哈希函数输出范围大于输入范围　,但是由于键的数量会远远大于映射的范围,所以在实际使用时,这个理想的结果是不可能实现的。　图3-7　完美哈希函数　比较实际的方式是让哈希函数的结果能够尽可能的均匀分布,然后通过工程上的手段解决哈希碰撞的问题,但是哈希的结果一定要尽可能均匀,结果不均匀的哈希函数会造成更多的冲突并导致更差的读写性能。　图3-8　不均匀哈希函数　在一个使用结果较为均匀的哈希函数中,哈希的增删改