Go语言技术文章
-
json/v2 中 omitzero 按 Go 零值判断,omitempty 按 JSON 空值判断。本文用字段类型、IsZero 和迁移清单说明如何选择。461 收藏 -
filepath.WalkDir 的错误不只来自文件本身。本文按根路径、目录读取和子项回调三类入口,讲清 d 为 nil、SkipDir 与 SkipAll 的处理边界。460 收藏 -
Go trace 的 scheduler latency 与 CPU profile 统计对象不同。本文用同一段负载采集两份画像,解释如何区分调度排队、CPU 热点和阻塞等待,并给出复采检查清单。460 收藏 -
从闭包变量绑定、Go 版本语义和 Timer 生命周期三个方向,排查循环创建 Go 定时回调时业务标识错位,并给出可落地的修复与回归清单。460 收藏 -
讲清 Go 1.27 泛型方法为什么不能直接满足接口,并比较非泛型桥接、参数化接口与顶层泛型函数三种兼容设计。460 收藏 -
Go 接收外部 JSON 后,先规范化再一次收集字段错误,能让接口边界更稳定。本文用标准库重组一套可复用的输入处理方式,并说明什么时候值得生成 JSON Schema。460 收藏 -
用一个带版本、标志和长度字段的 Go 二进制帧解析器,演示如何设计 f.Add 种子语料,并在 FuzzParseFrame 中断言长度一致、保留位合法、编解码回环和内存独立性。460 收藏 -
Go 1.24 起可用 http.Server.Protocols 显式限定服务端协议集合。本文给出只启用 HTTP/1 与 TLS HTTP/2 的最小写法、完整服务代码、客户端协商检查,以及明文 HTTP/2、旧 TLSNextProto 配置和反向代理场景的兼容边界。460 收藏 -
Go archive/tar 不应通过文件名后缀判断 Tar 链接。读取 Header.Typeflag 区分 TypeLink 与 TypeSymlink,再从 Header.Linkname 记录目标;链接条目没有可供 Reader.Read 消费的正文。459 收藏 -
Go errors.Join适合把多个清理或批处理失败原因合并为一个error返回,同时保留errors.Is和errors.As的可判定链。本文用资源关闭场景说明nil处理、错误遍历、上下文包装和兼容边界。459 收藏 -
Go 程序退出前不能靠主函数自然返回来等待后台 goroutine。通过明确关闭输入、WaitGroup 等待和资源所有权,可以确认清理动作完成后再退出。459 收藏 -
Go 泛型约束里的 ~string、~int 表示一组底层类型相同的类型集合。本文用自定义类型和组合约束说明波浪线与精确类型项的区别,以及如何选择约束边界。459 收藏 -
Golang · Go教程 | 3星期前 | 事务 · 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 收藏