-
Go encoding/gob 按字段名匹配结构体数据。本文说明旧 gob 数据解码到新增导出字段的结构体时为何通常仍然兼容、哪些类型变化会失败,以及如何设计结构体迁移测试。
-
Go sync.Map.LoadOrStore 返回的 actual 是最终值,loaded 则说明这个值来自已有条目还是本次存入。本文结合空键、已存在键和并发竞争,说明如何用 loaded 判断初始化责任,避免把候选值误当成缓存结果。
-
Go 的 http.Request.PathValue 为空,通常不是参数丢了,而是请求没有经过包含命名通配符的 ServeMux 匹配,或测试中的通配符名称不一致。本文从匹配链路、最小实现、httptest 和 SetPathValue 四个场景说明排查与修复方式。
-
Go testing/quick 的 Config 可以同时控制随机输入和检查次数:用 math/rand.New(rand.NewSource(seed)) 固定 Rand,用 MaxCount 限制迭代上限。本文说明两者的优先级、生命周期和失败定位边界。
-
Go 的 FileMode 同时包含文件类型、普通权限和特殊权限。本文说明如何只替换权限位,正确构造 File.Chmod 入参,并处理 Unix 与 Windows 的语义差异。
-
Go URL.ResolveReference 的基础路径末尾斜杠会改变相对路径合并位置。通过目录前缀对照和四条表驱动用例,区分目录基址、当前页面、根路径与查询引用,避免错误拼接。
-
Go mime.ExtensionsByType 做 MIME 到扩展名的反向查询时,结果可能包含多个带点后缀。本文说明如何把它当作候选集合,并用业务格式、用户偏好或稳定排序选择默认后缀,同时明确它不负责检测文件内容。
-
Go http.Server.ServeTLS 的证书文件参数可以为空,但前提是 TLSConfig 已通过 Certificates、GetCertificate 或 GetConfigForClient 提供证书。本文用最小代码和参数表说明内存证书配置、动态选证书与启动排查边界。
-
Go mime.ParseMediaType 遇到可选参数格式错误时,可能返回已经识别出的媒体类型和 ErrInvalidMediaParameter,但参数映射不可继续当成完整结果使用。本文用返回组合、错误判断和降级策略说明怎样处理这一边界。
-
Go HTTP 服务可以通过 Server.ConnContext 为新连接创建带元数据的上下文,后续请求从 r.Context() 继承读取。本文用连接追踪标识演示配置方式,并比较 BaseContext、ConnContext 与请求级 WithContext 的边界,说明 HTTP/2 并发和资源清理时的注意事项。
-
Go 的 http.Server.ErrorLog 专门接收连接接收失败、Handler 异常行为和底层文件系统错误。本文按工作流说明如何创建自定义 log.Logger、注入 Server、理解 nil 默认行为,并区分它与业务访问日志。
-
Go handler 的取消分支不必依赖真实网络超时。本文用 httptest.NewRequestWithContext 构造已取消和带截止时间的请求,区分 context.Canceled 与 context.DeadlineExceeded,并说明 ResponseRecorder、取消时机和断言边界。
-
testing/quick.Check 的随机失败要靠可复用的随机源来复现。本文说明如何记录 CheckError.In、Count 和 seed,并保持 Config、Generator 与迭代上限不变,稳定重跑同一组输入。
-
Go testing/quick.Value 默认生成结构体时遇到未导出字段会受反射写入边界影响,本文说明 Generator、Config.Values 与构造函数的选择方法。
-
Go go/build.MatchFile 判断的不是孤立文件名,而是文件扩展名、GOOS/GOARCH 后缀、文件头构建约束与 Context 配置的组合。本文用跨平台源码扫描场景拆开这些条件,并给出可复用的调用方式。