
golang
文章平均质量分 80
qq_16899143
这个作者很懒,什么都没留下…
展开
-
golang map原理的一点研究
扩容时会创建新的桶和溢出桶,此时如果访问map,会在旧桶和新桶中查询值,如果写入或删除旧桶中的元素,则会导致目标旧桶中的元素被分发到对应的新桶。map的所有桶都是连续的,其中mapextra.overflow 占据了一部分连续的空间用来分配溢出桶,每当hmap.buckets中的桶发生溢出时就会到mapextra.overflow 的空间中申请一个桶。因为一个bmap代表的桶只存放8个键值对,所以需要有溢出桶保存溢出的键值对,溢出桶形成一个链,overflow则保存了下一个溢出桶的指针。原创 2023-02-14 19:59:43 · 275 阅读 · 1 评论 -
golang fmt.Sprintf(“%.2f“) 的舍入问题
首先,fmt.Sprintf("%.2f")使用的是banker rounding 而不是四舍五入原创 2023-02-13 19:39:16 · 3278 阅读 · 2 评论