go
文章平均质量分 58
PentaQwQ
记个笔记
展开
-
go语言函数传参传指针和传值的效率分析
转自:https://zhuanlan.zhihu.com/p/59751716原作者github:https://github.com/lvgithub/go_blog/blob/master/Escape/Escape.md函数传递指针还是传值?两种选择的本质区别是什么?哪种方式的性能更高呢?先说结论:不一定逃逸分析Go中有一个很重要的概念就是逃逸分析。逃逸分析是指由编译器决定内存分配的位置。分配在栈上:函数运行结束后自动回收分配在堆上:函数运行结束后由GC回收最终执行效率和这原创 2022-04-27 18:08:12 · 631 阅读 · 0 评论 -
Go 语言的interface和duck typing
Go 语言的interface和duck typing原创 2022-03-16 19:12:25 · 96 阅读 · 0 评论 -
go map的扩容过程
核心源码// src/runtime/hashmap.go/mapassign// 触发扩容时机if !h.growing() && (overLoadFactor(int64(h.count), h.B) || tooManyOverflowBuckets(h.noverflow, h.B)) { hashGrow(t, h) }// 装载因子超过 6.5func overLoadFactor(count int64, B uint8) bool {原创 2022-03-14 18:47:28 · 1562 阅读 · 1 评论 -
go Map底层是怎么实现的
Go采用的是哈希查找表,使用链表解决哈希冲突来实现map源码中map的结构体是hmap:// A header for a Go map.type hmap struct { // 元素个数,调用 len(map) 时,直接返回此值 count int flags uint8 // buckets 的对数 log_2 B uint8 // overflow 的 bucket 近似数 noverflow uint16 // 计算 key 的哈希的时候原创 2022-03-14 17:00:34 · 180 阅读 · 0 评论 -
Gin 中间件的使用
Gin 中间件的使用中间件的使用router := gin..Default()Default源码:func Default() *Engine { debugPrintWARNINGDefault() engine := New() engine.Use(Logger(), Recovery()) //这里的Logger和Recovery就是两个中间件 return engine}如果想要使用新的中间件的话只需要添加router.Use(xxx)即可自定义中间件先看下上述原创 2021-12-31 15:55:02 · 334 阅读 · 0 评论