Go语言技术文章
-
Go 表驱动测试调用 t.Parallel 后,子测试可能在外层循环继续修改变量时才真正执行。本文从调度语义、Go 1.22 循环变量规则和指针切片共享边界说明原因,并给出兼容旧模块的修复写法。459 收藏 -
用 go tool trace -d=parsed 把 Go 执行追踪文件转换为解析事件文本,掌握输入准备、输出保存、调试模式区别与失败边界。459 收藏 -
讲清 Go database/sql.Tx.StmtContext 如何把已有的 DB 级预编译语句绑定到当前事务,并比较 Tx.PrepareContext、ExecContext 的适用场景、上下文边界和关闭时机。459 收藏 -
Go 的 io/fs.ValidPath 没有 nil 参数,所谓空值通常是空字符串。本文梳理空字符串、.、首尾斜杠、. 与 .. 元素、非法 UTF-8 的判断结果,并用小函数把语法错误和文件不存在分开处理。459 收藏 -
解释 Go url.ResolveReference 在空路径、查询串和片段之间的继承条件,通过原创建例区分空引用、显式问号与新路径,并说明保持原始查询和清除片段的业务取舍。459 收藏 -
Go token.File.LineStart 接受 1-based 行号并返回 token.Pos。本文用最小示例说明如何建立行表、把行首位置转换为文件内字节偏移,并避开无效行号、UTF-8 与 CRLF 带来的位置误判。459 收藏 -
用 net/http.CrossOriginProtection 保护状态变更接口时,如果健康检查使用非安全方法,可用 AddInsecureBypassPattern 配置精确的例外模式。本文说明方法匹配、直接匹配、冲突和默认拒绝边界。459 收藏 -
Cobra 的 RunE 应该返回错误,由 Execute 向上传递,最后在 main 中统一打印并返回非零退出码。本文给出可测试的代码结构,并说明 SilenceErrors、SilenceUsage 与参数错误如何一起纳入统一出口。459 收藏 -
Golang · Go教程 | 4星期前 | 错误处理 · 数据库 · 事务处理 · Go教程 · 后端开发 · Go commit 事务 rollback database/sql sql.Tx BeginTx
Go database/sql 的事务关键在于把 BeginTx、事务内读写、Rollback 和 Commit 组织成清晰分支。本文用订单与库存场景说明 sql.Tx 的使用边界、提交失败处理、连接占用和落地检查。458 收藏 -
Go context.WithoutCancel 可以保留请求范围内的值,却不继承父上下文的取消信号。本文对比 Value、Done、Deadline、Err 和 Cause,并给出脱离请求后重新设置独立超时的写法。458 收藏 -
Go POST 的 GetBody 为空,常与请求构造时的 Reader 类型有关。本文展示内存快照与显式正文工厂,说明 Clone、ContentLength 和关闭责任,并区分正文可重放与业务允许重试的前提。458 收藏 -
Go text/template 中变量输出为空,常见原因不是模板语法,而是 range、with 改变了点号上下文,或子模板没有显式收到数据。本文用最小示例拆开 dot、$、变量和字段访问的作用域边界,并给出可复用的排查清单。458 收藏 -
Go 1.27 的 go test -json 会为 output 事件补充 OutputType。本文说明如何区分普通输出、frame、error 和 error-continue,并用 Go 按行消费交错的测试 JSON 事件。458 收藏 -
Go reflect.Value.FieldByIndex 接收 StructField.Index 这样的字段路径,可读取嵌套或匿名嵌入结构体中的目标字段;遇到可能为空的指针时,应使用 FieldByIndexErr 获取可处理的错误。458 收藏 -
Go filepath.Rel 只能在目标系统能够相对化的路径之间计算结果。本文解释 Windows 盘符与 UNC 共享根不一致时为什么报错,给出卷名预判、跨平台测试和迁移方案选择。458 收藏