Go语言map底层实现

``map``是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? Golang中``map``的底层实现是一个散列表,因此实现``map``的过程实际上就是实现散表的过程。在这个散列表中,主要出现的结构体有两个,一个叫``hmap``(``a header for a go map``),一个叫``bmap``(``a bucket for a Go map``,通常叫其``bucket``)。这两种结构的样子分别如下所示: ...阅读全文

2018-08-26 02:58:20 RyuGou
阅读:3658 评论:0

图解Golang的channel底层原理

废话不多说,直奔主题。 ## channel的整体结构图 ![](https://i6448038.github.io/img/channel/hchan.png) 简单说明: + ``buf``是有缓冲的channel所特有的结构,用来存储缓存数据。是个循环链表 + ``sendx``和``recvx``用于记录``buf``这个循环链表中的~发送或者接收的~index + ``lock``是个互斥锁。 + ``recvq``和``sendq``分别是接收(<-cha...阅读全文

2019-05-28 12:17:10 RyuGou
阅读:9942 评论:3