Go语言技术文章
-
Golang · Go教程 | 3星期前 | 标准库 · 定时器 · Go教程 · Go time.Timer Timer.Reset Timer.Stop 定时器复用 asynctimerchan 旧事件
Go 1.23 默认 timer channel 已不会让 Reset 后读到旧事件,但旧版本或 asynctimerchan=1 仍需 Stop、排空 t.C 再 Reset。本文按版本、接收状态和 AfterFunc 边界给出可复用写法。443 收藏 -
用 Go slog.LogValuer 延迟展开业务对象:以轻量包装器配合 GroupValue 控制字段、脱敏和派生计算,并说明自定义 Handler、可变对象与 Resolve 的边界。443 收藏 -
go fix 的修改范围由命令末尾的包模式决定。本文用当前包、精确目录、子树模式和完整导入路径说明怎样缩小分析集合,并结合 go list、-C、-diff、fixer 开关与构建标签给出可审查的小批量改写流程。443 收藏 -
ResponseRecorder适合验证处理器输出,但不能代表真实连接和协议行为。本文用状态、Header、正文、Flush与NewServer测试分层补齐覆盖边界。442 收藏 -
说明 Go archive/zip 如何使用 OpenRaw 和 CreateRaw 原样复制已压缩条目,覆盖 FileHeader 复制、中央目录收尾、重名处理、ErrInsecurePath 与 CreateHeader 的适用边界。442 收藏 -
Go Handler 读取请求体后下游为空,通常是前置组件消费了 Request.Body。本文给出解析一次传递 Payload、兼容旧下游重建 Body,以及大小限制和错误处理方案。442 收藏 -
Go 使用 cipher.NewGCMWithTagSize 兼容既有 AES-GCM 协议时,需要固定 12 到 16 字节的认证标签长度,并让 Seal、Open、nonce 和附加数据配置保持一致。本文用一个小项目示例说明参数选择、错误判断和迁移边界。442 收藏 -
Go 的 rsa.EncryptOAEP 与 rsa.DecryptOAEP 必须使用相同 label。本文用用途名、数据类型和版本构造稳定 label,封装专用解密入口,并说明错用密文、统一错误处理、哈希一致和真实性边界。442 收藏 -
讲清 Go sync.WaitGroup 的计数快照、Add 与 Wait 的竞态边界,以及动态派生任务和 WaitGroup.Go 的安全用法。441 收藏 -
Golang · Go教程 | 3天前 | goroutine · Context · Go教程 · 批处理 · 批处理 Timer WithTimeout Go context WithCancelCause 父子取消链
本文用 root、batch、job 三层 Context 组织批处理生命周期,演示系统信号、整批失败和单任务超时的传播边界,并说明如何及时调用 CancelFunc、停止重试 Timer 与 Ticker。441 收藏 -
本文从零实现一个 Go 归档展开小工具:用 os.Root 限制落盘范围,只接受目录和普通文件,并通过路径白名单、文件数量、单文件大小与总展开量控制用户上传风险。441 收藏 -
Go 的 trace.Stop 太晚会让无关运行阶段混入追踪,也可能因 defer 顺序错误在文件关闭后仍尝试写入。本文用采集窗口和资源生命周期解释正确写法。440 收藏 -
Go 的 url.URL.JoinPath 会通过 path.Join 清理路径中的连续斜杠、./ 和 ../。本文用 API 路径、PathEscape 和方案对比说明为什么双斜杠会改变,以及什么时候不该使用 JoinPath。440 收藏 -
讲清 Go database/sql 中 Rows.Next 返回 false 的双重含义,给出 Query、Scan、Rows.Err 和 Close 的错误边界与可复用代码模板,避免把迭代失败误判为正常结束。440 收藏 -
用 iter.Pull 把 Go 的推送式 iter.Seq 转成可逐个取值的 next,并用 stop 正确处理读完、提前退出和并发调用边界。440 收藏