go
已收录文章:86篇
-
Go 泛型接口同时写类型集和方法时,约束的是可接受的类型与可调用的方法。本文用一个可运行的小实验拆开两层边界,解释为什么某些类型能传入、为什么调用方仍然不能调用具体类型方法,并给出检查和扩展写法。201 收藏
-
Go SSE 连接断开后,客户端应把服务端下发的 id 保存为恢复游标,重连时通过 Last-Event-ID 请求缺口;服务端按游标补发并让消费动作具备幂等性,才能同时避免漏事件和重复处理。194 收藏
-
Go 泛型代码里,值类型约束明明包含目标类型,却可能无法调用指针接收者方法。本文用类型集、方法集和可运行示例拆开这个边界,并给出约束与调用方都能验收的写法。193 收藏
-
Webhook 只校验 HMAC 签名还不够,攻击者仍可能重放一条合法请求。本文用时间戳限制有效窗口,用 nonce 做短期去重,并明确原始请求体、密钥轮换、幂等写入和审计日志的边界,给出 Go 服务可以落地的验签流程。187 收藏
-
Go 的 time.Ticker 适合固定节拍触发工作,但当一次任务比 tick 间隔更长时,调度、积压和取消边界很容易混在一起。本文用一个定时刷新任务说明 Stop 与 Reset 的正确位置,并给出带背压、可退出、可观测的写法。185 收藏
-
解释 Go sync.Pool 的临时对象复用边界,说明 GC 为什么可以清空池、为什么不能拿它保存业务数据,并给出清理与并发核对方法。178 收藏
-
用 Go 标准库 log/slog 为请求日志绑定稳定的组级属性,比较 With 与 WithGroup 的差异,并通过并发测试确认字段不会串请求。178 收藏
-
Go 泛型函数一旦把参数收窄成 any,就会失去编译期可用的类型信息。本文从一个可复用的过滤函数出发,对比 any、类型断言和泛型约束的边界,并给出选择建议。173 收藏
-
strings.Fields 适合按空白切分普通文本,却不能把带引号的命令参数当成一个整体。本文从文件名带空格的真实输入出发,比较 Fields、简单状态机和标准库参数解析的边界,并用表驱动测试固定转义行为。172 收藏
-
Go 接口升级时,既要识别未知字段避免拼写错误,又要保留新字段以兼容旧客户端。本文用 Decoder、DisallowUnknownFields 和 json.RawMessage 拆开这条边界。170 收藏
-
Go 程序在本地和服务器上解析出不同时间,通常不是时钟坏了,而是输入是否带时区、time.Parse 使用的 Location 以及序列化格式没有对齐。本文用最小实验拆开这三个边界,并给出可回归的处理方式。161 收藏
-
用一个可复现的超时清理场景,说明 context.AfterFunc 的回调时机、Stop 返回值和幂等清理边界,给出可运行的 Go 示例与并发回归检查。151 收藏