-
Go 1.26 起标准库提供 crypto/hpke,但 KEM、KDF、AEAD 不是可以任意拼接的三个下拉框。本文从兼容性、后量子迁移、硬件环境和应用用途出发,给出 DHKEM、ML-KEM、混合 KEM、HKDF、SHAKE、AES-GCM 与 ChaCha20-Poly1305 的选择思路,并用 Seal/Open 示例固定一套可复查的配置。
-
Go 1.26 的 crypto/hpke 同时提供一次性 Seal/Open 与有状态 Sender/Recipient。本文用连续消息流程说明 enc、info、AAD、nonce 计数器和消息顺序的复用边界,帮助你选对上下文生命周期。
-
Go 的 runtime.SetFinalizer 只在对象不可达后安排清理,函数里的最后一次使用不一定能把对象保活到系统调用结束。本文用非内存句柄场景拆解对象可达性、runtime.KeepAlive 的放置位置、finalizer 的边界与工程选型。
-
time.Duration 本质是 int64 纳秒计数,乘法、单位换算或退避累加一旦超出约 290 年范围就可能回绕成负数或异常的小值。本文从定时任务故障场景出发,给出边界判断、饱和乘法和定时器接入的 Go 实现。
-
围绕 Go net/url 的 URL.OmitHost 字段,说明空 authority 的 String 序列化、Path 双斜杠保护、Opaque URL 区别和调用方兼容策略,给出带中文注释的最小示例。
-
同一个无时区日期在不同机器上出现一天偏移,通常不是日期字符串变了,而是解析位置没有明确。本文从 time.Parse 的 UTC 默认行为出发,说明 time.ParseInLocation 如何绑定 Location,并处理显式偏移、时区缩写、IANA 时区加载和夏令时边界。
-
Go 的 URL 查询参数同时存在原始字符串和解码后的值。本文用 net/url 拆开 RawQuery、Query 与 ParseQuery 的差异,处理重复键、加号、分号和异常百分号,并给出适合签名、缓存、审计和业务筛选的选择方式。
-
time.Parse 遇到 MST、CST、PST 等时区缩写时,会受 Local 和缩写是否已知影响。本文用 Zone、Location 和 ParseInLocation 拆开定位方法,并给出更稳定的数值偏移解析方案。
-
Go 的 net/url 会把路径解码后放入 Path,RawPath 只是可选的编码提示。本文用转义斜杠示例说明 EscapedPath 何时保留 RawPath,以及手动构造 URL 时如何避免提示失效。
-
反复调用 regexp.MatchString 时,包级函数会把正则编译带进热路径。本文拆开调用链,给出固定模式与动态模式两种缓存设计,并处理并发、编译失败和容量边界。
-
Go 用 os/exec 启动外部命令时,Cmd.Dir 可以固定子进程的工作目录,让命令稳定解析相对配置、输入和输出路径。本文从路径归属、相对可执行文件、Env/PWD 和启动错误几个证据入手,给出可直接改造的写法。
-
Go regexp 允许多个捕获分组使用同一个名称,真正的编译错误通常来自命名语法、括号闭合、转义或不支持的 Perl 扩展。本文用最小模式、syntax.Error 和 SubexpIndex 拆开排查路径,并给出生产代码中的命名策略。
-
Go 的 exec.CommandContext 默认会在上下文超时后调用 Cmd.Cancel 并 Kill 子进程,但生产任务常需要更温和、可观测的退出策略。本文说明如何设计自定义 Cancel,处理 os.ErrProcessDone、WaitDelay、管道收尾和错误归因。
-
Go regexp 会把无效 UTF-8 输入中的异常字节按 utf8.RuneError 处理,而不是保留原始字节。本文对比先拒绝、规范化后匹配和改用 bytes 做字节级查找三种方案,帮助你按数据边界选对实现。
-
Go text/template 遇到嵌套 define 同名覆盖时,按关联模板、Parse 顺序、文件基名和 ExecuteTemplate 入口逐项定位,避免执行到错误定义。