-
批量压缩多个独立数据块时,可以复用同一个 gzip.Writer,但必须先 Close 完当前 gzip 流,再调用 Reset 切换输出目标,并在首次写入前重新设置 Header。本文用两个缓冲区说明复用顺序、元数据边界和不适合共享 Writer 的场景。
-
Go database/sql Tx 在 BeginTx 成功后注册 defer 回滚兜底,用提交成功标记明确收尾权,并保留业务、提交与清理错误。附原创封装示例与取消、panic 和提交失败的边界说明。
-
Go hash/maphash 适合为当前进程内的字符串或字节键计算 uint64 哈希。本文从 Seed 的归属、String 与 Bytes 的选择、复合键规范化和并发边界入手,说明哪些结果可以用于分桶和索引,哪些用途不应依赖。
-
Go embed 报 pattern 没有匹配文件,通常不是资源不存在,而是 pattern 相对目录、文件名大小写、扩展名或目录可见性与实际结构不一致。本文用最小示例拆解定位方法。
-
Go 的 x/text/number.Percent 适合把 0 到 1 的比例值格式化为带百分号的本地化文本。本文从输入尺度开始,说明 message.Printer、Scale、Precision 和舍入边界怎样配合,并给出可复用的封装。
-
Go WebSocket 处理器同时遇到 HTTP 错误响应、握手失败和连接写入失败时,最容易出现重复写响应或错误归因混乱。本文按升级前、升级中和升级后三个边界,说明 http.Hijacker、Upgrader 和 ResponseWriter 的处理顺序。
-
GOTOOLCHAIN=auto 会结合 go.mod 或 go.work 的版本要求选择工具链。本文拆开 local、auto、path 与 name+auto/name+path 的边界,说明启动选择、依赖触发切换和排查命令。
-
Go Hamba Avro 处理演进中的 Avro 记录时,应先用 SchemaCompatibility.Resolve(reader, writer) 生成复合 Schema,再交给 NewDecoderForSchema 解码。本文用新增默认字段、删除旧字段和 int 到 long 类型提升说明完整路径,并补充不可信输入的大小限制与拒绝记录边界。
-
用 Go database/sql 调用带 OUT 或 INOUT 参数的存储过程时,掌握 sql.Out、Dest 和 In 的绑定关系,配合 ExecContext 与驱动能力排查,避免输出值无法回写。
-
Go JSON 时间字段解析失败常源于输入表示与 time.Time 的 RFC3339 契约不符。本文给出三种输入的最小复现,说明旧格式的显式转换、时间戳单位、空值规则与迁移选择。
-
Go 的 csv.Writer 会缓冲每条记录,Flush 只是把缓冲内容交给底层 io.Writer,真正的写入错误要通过 Error 读取。本文从旧写法的风险出发,给出同时处理 Write、Flush 和 os.File.Close 的 CSV 导出收尾方式。
-
Go 1.23 引入的 unique.Make 可以把可比较值规范化为 Handle。本文从最小写法、map 去重、类型约束和生命周期四个方面说明如何正确复用唯一实例。
-
CGO_ENABLED=0 会让 cgo 构建约束失效。本文从环境确认、文件筛选到纯 Go 实现配对,说明如何定位“找不到实现”并稳定检查两条构建分支。
-
Go pprof HTTP 地址打开为空时,先区分服务、路径和 mux 三层问题。本文从 net/http/pprof 的匿名导入讲起,说明 DefaultServeMux 与自建 ServeMux 的注册差异,并给出目录页、heap 和 CPU profile 的排查顺序。
-
Go 的 os.Chown 接收路径、uid 和 gid,用于修改 Unix 文件或目录的数字所有者信息。本文说明 -1 保留参数、符号链接与 Lchown 的差别、权限错误处理和 Windows/Plan 9 平台边界。