Go语言技术文章
-
Golang · Go教程 | 2个月前 | 事务 · go · database/sql · Go database/sql readonly TxOptions driver.ConnBeginTx
Go 的 sql.TxOptions.ReadOnly 通过 DB.BeginTx 传给 driver.ConnBeginTx,是否真正形成只读事务取决于驱动实现。本文拆解传递路径、错误边界和连接池收尾方式。458 收藏 -
Go archive/tar 写入 io.Pipe 后在 Close 阻塞,通常是读端没有持续消费导致的同步背压。本文比较 bytes.Buffer、文件和 io.Pipe 的适用场景,并给出带错误传播与取消处理的流式写法。458 收藏 -
errors.As 的 target 不是普通比较值,而是接收匹配错误的可写槽位。本文用最小实验解释双指针写法、三个 panic 条件、错误树匹配规则,以及新版 errors.AsType 的替代方式。458 收藏 -
Golang · Go问答 | 1个月前 | 并发 · goroutine · go · pprof · 故障排查 · goroutine泄漏 并发排查 Goroutine生命周期 Go pprof runtime metrics
Goroutine 持续上涨不等于立刻报错。本文用运行时指标、双时点堆栈快照和退出协议,定位 channel、I/O、ticker 与重试链路中的泄漏入口。458 收藏 -
Golang · Go问答 | 1个月前 | 并发 · channel · goroutine · go · Context · context 并发限制 工作池 Go channel worker pool Goroutine生命周期
任务总量小且有界时,每任务一个 goroutine 更简单;持续或无界输入、昂贵资源和容量有限的下游,更适合创建前限流或固定工作池。本文给出选择表与可取消实现。458 收藏 -
在 CI 中使用 go fix -diff 可以只输出统一差异而不改写源文件:无建议时退出 0,有待应用差异时退出非零。本文给出最小门禁脚本、保留补丁时的 pipefail 写法、包范围拆分方案和故障判定清单。458 收藏 -
url.ParseQuery 返回错误时,Values 仍然包含已经成功解码的合法参数。本文用一个混合合法与非法编码的查询串,说明如何识别部分成功、如何在保留参数和拒绝请求之间做出明确选择。458 收藏 -
Golang · Go教程 | 1个月前 | 错误处理 · 数据库 · 事务处理 · 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 收藏 -
使用 strings.Builder 构造长字符串时,先校验空输入,再按片段和分隔符的字节数估算容量并调用 Grow。本文用一个可复用示例说明错误返回、Len、Cap、Reset 与 Builder 生命周期边界。458 收藏