-
Go 1.27 的 encoding/json/v2 默认拒绝 JSON 重复键。本文用批处理示例说明严格模式、遗留兼容开关、结构体复用和分配测量的边界。
-
Go plan9obj.Section 的两个读取者应分别调用 Open,以隔离各自的 Seek 游标。本文对比共享读取器、独立 Open 和 ReadAt,给出窗口读取示例,并说明底层文件寿命与关闭责任。
-
接收用户提供的文件路径时,先用 filepath.IsLocal 做词法边界判断,可以拒绝绝对路径、空路径、父目录逃逸意图以及 Windows 保留名,再安全地拼接工作目录。本文用一个可复用的 Go 示例说明校验、Join 和真实文件操作之间的边界,并提醒 IsLocal 不会解析符号链接。
-
go mod graph 会把模块需求图按一行一条边打印出来,适合查看主模块、传递依赖、版本要求和 replace 后的关系。本文说明输出格式、筛选方法,以及它和 go list -m all、go mod why 的区别。
-
Go 的 os.OpenFile 传入 0666 后,新文件可能显示为 0644,原因通常是 Unix-like 系统的 umask 按位屏蔽了权限。本文结合 O_CREATE、O_TRUNC、默认 ACL 和跨平台边界说明如何排查。
-
Go http.Client 遇到 307/308 重定向时,请求方法和请求体只有在 GetBody 可用时才能安全重放。本文说明 NewRequest 的常见 Reader 边界、自定义 Reader 的补救方式与 CheckRedirect 的控制方法。
-
Go crypto/aes 不会替业务配置自动处理可选字段:密钥始终必填,GCM 的 nonce 按模式决定是调用方提供还是由随机封装生成,AAD 可以为空但解密必须保持一致。本文用一个小型配置入口拆清缺省字段的判断、错误和适用边界。
-
Go go/build.Context 看似配置了 GOOS、GOARCH 或 BuildTags 却没有生效,通常是调用了 build.Import、路径不是绝对路径,或把 go/build 误当成 go build 的控制器。本文用最小示例拆开这三类边界。
-
Go net/http.Transport 连接池不复用时,先确认 Transport 是否被重复创建,再用 httptrace.GotConn 判断 Reused 和 WasIdle,最后检查 Response.Body、Keep-Alive 参数与服务端连接边界。
-
讲清 Go slices.Chunk 的尾组长度、空输入、非法 n、容量裁剪和底层数组别名,给出适合批量消费的判断方法。
-
Go errors.Join 适合把多个可选字段的校验错误合并成一个可检查的错误树。本文用请求补丁示例说明 nil、errors.Is、errors.As、输出顺序和不适用场景。
-
Go sync.Mutex.TryLock 用 bool 结果表示本次是否立即拿到锁:true 才能进入临界区并负责 Unlock,false 不会建立同步关系。本文结合可跳过任务说明判断、解锁和使用边界。
-
Go 的 math/big.Int 表示整数,调用 Quo 时会按整数除法截断,因此 5 除以 2 得到 2。需要保留小数时,应把输入放进 big.Rat,再用 Quo、RatString 或 FloatString 输出。本文同时说明 QuoRem、IsInt、除数为零和负数边界。
-
testing.T.Setenv 不是通用资源释放器,它通过 Cleanup 在测试结束后恢复环境变量。本文按生命周期、并行限制和直接 os.Setenv 三条线排查“没有释放”的错觉,并给出文件、连接和 goroutine 的独立清理写法。
-
本文用 Go slices.Compact 压缩连续重复元素,说明它怎样保留原切片顺序、原地复用底层数组、处理尾部元素,以及什么时候应改用 CompactFunc。