-
Go 处理跨夏令时的日期范围时,不要把一天硬编码成 24 小时。本文用 time.Location 绑定 IANA 时区,以左闭右开方式构造本地日期边界,并说明 AddDate 与 Duration 的使用区别。
-
Go 读取邮件时,mail.ReadMessage 负责拆分邮件头,中文 Subject 用 mime.WordDecoder.DecodeHeader 解码,中文 From 则用带 WordDecoder 的 AddressParser 解析;遇到 GBK 等字符集时再补 CharsetReader。
-
用 Go 的 io.Pipe 把压缩器输出和 HTTP 请求串成一条流,说明读写端协作、错误传递、请求结束和可复查验证的关键边界。
-
Go 1.27 的 go fix 新增 slicesbackward modernizer,可把符合条件的手写切片反向循环迁移到 slices.Backward。本文说明如何预览变更、何时保留索引变量,以及生成文件和构建标签带来的边界。
-
Go json.Decoder 可能提前从底层 Reader 读取数据,Decode 返回后仍有一部分字节停留在内部缓冲。本文说明 Buffered 的准确边界、如何和底层 Reader 余量拼接,以及为什么下一次 Decode 或 Token 后不能继续依赖旧 reader。
-
Go http.Client 可以在 CheckRedirect 中读取 via 请求链并设置跳转上限。本文区分重定向次数与请求总数,说明普通错误和 http.ErrUseLastResponse 对 Response、Body 和 url.Error 的不同影响。
-
Go 的 crypto/mlkem 把 ML-KEM 密钥分成私有的 DecapsulationKey 和公开的 EncapsulationKey。本文说明 GenerateKey、Bytes、New*Key 的对应关系,并整理 768/1024 参数集的序列化长度与工程基线。
-
Go 的 http.Pusher 仍可探测,但 Push 在客户端禁用或连接不支持时会返回 ErrNotSupported。更稳的资源加载方案是以最终 HTML 为主,按首屏预算组合 preload 与 103 Early Hints,把 Push 降级为可选加速。
-
Go 动态拼接正则表达式时,先用 regexp.QuoteMeta 转义用户输入,才能让点号、括号、加号等字符按字面匹配;本文同时说明模式结构、Compile 错误和替换模板的边界。
-
用 Go iter.Pull 构建受限整数收集器,区分 nil 迭代器、空序列、合法零值、解析错误与提前停止,提供完整代码,并解释 defer stop、panic 传播和资源清理的边界。
-
Go 模块发布后发现严重问题时,可以用 retract 标记单个版本或闭区间,让后续版本选择避开它,同时保留已有项目的可复现构建。本文说明 go.mod 写法、承载版本、go list 查询与旧工具链边界。
-
GoLLRB 的 DeleteMin 会删除并返回有序树中的最小元素,空树返回 nil。本文对比 Min 与 DeleteMin,演示 llrb.Int、类型断言和连续消费时的停止条件。
-
Go http.Server 的优雅关闭不是直接调用 Close,而是用 Shutdown 先停止监听、关闭空闲连接,再等待活动请求结束。本文给出带退出信号和超时上下文的最小实现,并说明 ErrServerClosed、超时以及 WebSocket 等长连接边界。
-
reflect.VisibleFields 会把匿名嵌入结构中的可见字段和未导出字段一起返回,真正的导出筛选要交给 StructField.IsExported。本文用一个包含嵌入结构的例子说明如何保留提升字段、处理 Index,并封装成可复用函数。
-
Go 的 weak.Pointer 不会阻止对象回收,但 finalizer 会临时复活对象。本文说明旧弱指针为何在 finalizer 排队时失效,以及如何通过禁止强引用逃逸、改用 runtime.AddCleanup、按缓存未命中重建对象来消除复活风险。