-
Go 1.22 起,net/http ServeMux 支持 {id} 与 {path...} 通配符。本文说明如何用 Request.PathValue 读取路径值,并梳理解码、冲突与版本兼容边界。
-
Go JSON v2 自定义编码器按类型而非字段名匹配。以独立字段类型、MarshalToFunc 与 WithMarshalers 为例,解释调用范围、字符串编码、递归和错误处理,并明确 Go 1.25 实验接口的使用前提。
-
encoding/json v2 的 omitzero 按 Go 零值或 IsZero 方法省略字段。本文对比 omitempty 在 nil 与空容器上的差异,并说明统一选项与反序列化边界。
-
Go 1.26 新增 crypto/hpke 包后,可以用 KEM、KDF 和 AEAD 组合一次混合公钥加密。本文从密钥生成到 Seal/Open 闭环,说明封装信息、info、AAD 和状态上下文的关系。
-
Go 使用 atomic.Uint64 累计独立事件时,需要统一 Add 与 Load 访问并共享对象指针。本文用完整示例说明快照、任务结束、禁止复制及64位对齐,并划清溢出、热点竞争和多字段一致性的边界。
-
Go 的 io.NewSectionReader 可以把支持 ReaderAt 的数据源包装成固定区间读取器。本文用分段文件读取场景说明 offset、length、Read、ReadAt、Seek、Size 与 EOF 的关系。
-
用 Go BinaryMarshaler 与 BinaryUnmarshaler 实现自定义二进制类型,明确输入副本、独立编码结果、错误原子性以及长度和版本处理,避免切片共享带来数据联动。
-
用 Go io.TeeReader 可以在读取文件、请求体或消息流时同步写入 hash.Hash,边读边计算 SHA-256 而不必先缓存完整输入。本文说明完整消费、摘要结果和写入错误之间的关系,并比较 TeeReader、MultiWriter 与 io.ReadAll 的适用场景。
-
Go 基准的 ReportMetric 只报告传入的数值,不会自动按 /op 归一化。本文用批处理示例说明总量除以 b.N、固定单次值、单位约束、重复覆盖、计时重置与默认指标的关系。
-
Go 的 crypto/rand.Read 保证填满目标切片且不把随机源错误作为普通返回值;需要观察短读、EOF 或可替换 Reader 时,应使用 io.ReadFull,检查 n 与 err,并丢弃不完整随机字节。
-
本文说明如何用 testing.T.Setenv 临时修改测试环境变量、自动恢复原值,并解释它为什么不能与 t.Parallel 或并行祖先同时使用。
-
Go 比较敏感摘要时,应对等长字节序列使用 crypto/subtle.ConstantTimeCompare;HMAC 校验优先使用 hmac.Equal。本文说明长度不一致会立即失败、返回值如何判断,以及摘要编码和最小测试的边界。
-
重复压缩短消息时,每次调用 flate.NewWriter 都会重新建立编解码器。本文围绕 Writer.Reset、Close、Flush 和 Reader 的 Resetter 接口,说明怎样复用编解码器、切换输出目标,并处理池化对象的生命周期与异常大缓冲。
-
Go 打包 ZIP 时可通过 FileInfoHeader 或 SetMode 写入模式,再用 CreateHeader 创建条目。本文用普通脚本分发示例说明名称、压缩方式、归档关闭和 Mode 读取,并区分权限记录与目标环境恢复。
-
Go 的 archive/tar 会把 PAX 扩展头关联到后续条目。本文用 Reader.Next 顺序读取 tar,说明长路径应看 Header.Name,自定义 PAX 键值应看 Header.PAXRecords,并列出格式判断和兼容边界。