-
Go标准库heap包仅维护堆性质,非堆排序实现;需手写siftDown、从最后一个非叶节点建堆,并动态管理heapSize才能原地完成堆排序。338 收藏 -
Go无内置重试+幂等机制,需手动组合http.Client、重试逻辑与Idempotency-Key头;盲目重试POST/PUT易致重复扣款,因Body不可复用、未区分可重试状态码、缺乏唯一幂等标识。338 收藏 -
atomic.StorePointer不能存任意指针,因要求指针指向GC可追踪的堆内存,栈地址或uintptr中转会引发悬垂引用或panic。338 收藏 -
GoTCP连接必须自己实现应用层Ping-Pong,仅调用conn.SetKeepAlive(true)不足;需每20–30秒定时发"PING"并等待"PONG"响应,配合time.NewTicker、select超时控制、每次读写前重设Read/WriteDeadline,且中间件proxy_read_timeout须大于心跳间隔×1.5。338 收藏 -
sync.Map适合读多写少场景的数据,如配置缓存、连接池元信息、用户会话状态快照;不适合高频增删改的实时聚合类数据。337 收藏 -
Go语言通过接口、组合和高阶函数实现装饰器模式:定义统一接口(如Logger),用结构体嵌入原对象并实现相同接口以叠加行为,支持链式调用与类型安全。337 收藏 -
优先选原生gRPC而非go-micro:gRPC性能高、跨语言强、控制透明,go-microv4虽基于gRPC但抽象过重易调试困难;新项目应从.proto定义、手写Server/Client起步,结合Consul等真实注册中心与自定义resolver实现服务发现。337 收藏 -
Go用elastic客户端发聚合请求需手动构造aggsJSON结构,必须注意字段名、嵌套层级、.keyword后缀、类型断言安全、size与execution_hint优化及time_zone一致性。337 收藏 -
应自定义http.Client并设超时(如10秒),配Transport复用连接;JSON解析用json.RawMessage延迟处理、字段名加json标签、非必填字段用指针;命令行用flag即可;本地缓存查词结果至UserCacheDir,以哈希命名、7天过期。337 收藏 -
Go中Registry模式需显式注册,用包级变量(如带锁map)管理插件,推荐init函数内注册、泛型约束类型安全、避免热加载而采用运行时替换。337 收藏 -
goget在国内超时或失败主因是proxy.golang.org及github.com等直连不稳定,需设GOPROXY=https://goproxy.cn,direct实现代理+直连兜底,并配GONOSUMDB解决私有模块校验问题。337 收藏 -
Gonet/rpc默认无超时,需用context.WithTimeout封装Call实现超时控制,或改用gRPC;HTTP/JSON-RPC还需分层设置连接、响应头、读取超时。337 收藏 -
在Gin中,可通过立即返回响应并启动独立goroutine执行后台任务,实现“快速响应+无等待后台处理”,确保客户端连接及时关闭,提升接口吞吐与用户体验。337 收藏 -
govulncheck是唯一能发现CVE的官方工具,但仅支持Go1.21+且依赖v2+schema漏洞数据库,不扫描vendor/、不支持离线,需配合gomodverify和golist-mall持续验证真实依赖。337 收藏 -
goroutine中的错误无法直接返回给主goroutine,必须通过通道、同步原语或errgroup.Group等机制传递;errgroup.Group可统一收集错误并支持上下文取消,但不捕获panic。337 收藏