-
本文说明如何用 testing.T.Setenv 临时修改测试环境变量、自动恢复原值,并解释它为什么不能与 t.Parallel 或并行祖先同时使用。
-
Go httptrace.GotConnInfo 的 Reused、WasIdle 和 IdleTime 分别回答不同问题。本文用 ClientTrace 观察 HTTP 客户端连接复用,说明响应体关闭、Transport 配置、重定向和 HTTP/2 场景下的判断边界。
-
bytes.Buffer.Reset 会清空未读内容、把偏移恢复为零,同时保留底层存储供后续写入。本文用消息组装示例说明 Len、Cap、Reset 与 Truncate(0) 的区别,以及复用时的所有权边界。
-
Go embed.FS 提供内嵌文件树,但文件系统根和 HTTP 公开前缀是两层路径。本文用 fs.Sub、http.FS、http.FileServer 与 StripPrefix,把 web/index.html 稳定挂到 /assets/index.html,并说明尾斜杠、目录索引和暴露边界。
-
Go GJSON 处理 JSON 数组时,可以用 #.字段提取所有元素的同名字段,用条件查询后再投影,或用多路径一次构造只包含指定键的对象。本文给出当前写法、缺失字段处理和旧查询语法迁移边界。
-
Go 的 json.Decoder 面向 JSON 输入流,单次 Decode 成功不代表请求体已经结束。本文用第二次 Decode 严格要求 io.EOF,拒绝第二个 JSON 值、非法尾部字符和空请求体,并说明它与 DisallowUnknownFields、请求体大小限制的区别。
-
Go 上传接口应在首次读取前包装 MaxBytesReader,并识别 MaxBytesError 返回 413。通过原始正文示例说明 ContentLength、完整读取、multipart 内存阈值、临时文件清理及单文件限制的区别。
-
Go log/slog 的 Record 是带有隐藏属性状态的日志记录。本文说明普通赋值为什么可能共享状态,怎样用 Record.Clone 安全复制,并结合 AddAttrs、Attrs、Handler 分支和 NewRecord 给出可落地的选择。
-
Go 1.27 的 crypto/x509 已支持 ML-DSA 私钥、公钥和签名。本文从 PEM/DER 解析开始,说明怎样读取 *x509.Certificate、判断 ML-DSA-44/65/87,并梳理旧版本、FIPS 模式和解析与验证的边界。
-
本文按 fitsio v0.3.0 的公开 API,说明如何用 NewHeader 和 Card 创建带 EXTNAME、DATE-OBS 等关键字的主HDU,再通过 Create、Write 和 Close 写入 FITS 文件,并列出字段、轴长度和资源关闭的回归检查项。
-
通过每次 Read 前后的 InputOffset 记录 CSV 输入消费范围,结合错误与输入版本回看原始字节,说明预读、多行字段、字节变换和失败后续传的边界。
-
用 Go range over func 和 iter.Seq2 实现可提前停止的函数迭代器,区分空输入、正常结束与读取错误,保留清晰的错误边界。
-
reflect.TypeFor 读取的是泛型参数代表的静态类型,reflect.TypeOf 读取的是值装入接口后的动态类型。本文用接口、指针接口和 Elem 的对照说明两者的差异与选择方法。
-
Go GJSON 读取多个不同路径时,不需要为每个字段重复处理整段 JSON。本文用 Parse 和 Result.Get 复用一次解析结果,再说明数组投影、多路径对象、缺失字段与类型转换的边界。
-
Go context.Value 适合传递跨 API 边界的轻量请求元数据,但不适合可选参数、必需业务参数、大型对象或可变状态。本文用包私有 key、类型安全读写函数和 HTTP 中间件示例说明其边界。