-
Go 的 os.CreateTemp 和 os.MkdirTemp 只负责创建资源,不会替调用方自动删除。本文从正常路径、错误路径和长时间运行服务三个场景说明如何用 defer 绑定清理责任,避免临时目录持续增长。
-
用 Go 的 compress/flate 读取不带 zlib 或 gzip 外层封装的原始 DEFLATE 数据,讲清 NewReader、NewReaderDict、EOF、损坏输入和流复用的边界。
-
很多人会把 io.PipeReader.CloseWithError 的方向写反:生产者异常应由 PipeWriter.CloseWithError 传给消费者,读端关闭则用 PipeReader.CloseWithError 让写端退出。本文用最小示例说明自定义错误、EOF、主动取消和首个关闭错误生效等边界。
-
Go 用 go/ast 修改 ImportSpec 时,直接改 Path 或 Name 通常不会丢掉 Comment;真正需要谨慎的是解析时是否保留注释,以及移动、删除节点后 File.Comments 与位置关系是否仍然一致。本文给出一套可复用的修改和输出流程。
-
Go 的 base32.StdEncoding 使用标准 Base32 字母表,base32.HexEncoding 使用 Extended Hex Alphabet。本文比较两者的字符集、互操作关系和 padding 选择,给出生产方与消费方的固定方式。
-
Go 基准测试把多个场景写在同一个 Benchmark 函数里时,结果很难比较。本文用 testing.B 的 Run 方法拆分样本,并把输入准备与计时范围分开,让每个子基准单独呈现 ns/op。
-
Go trace 和 pprof 的先后取决于症状:CPU 与内存热点先看对应 profile,低 CPU 高延迟和调度问题看短窗口 trace。本文给出选择表、原创编码基准和独立采集命令,说明口径与开销边界。
-
Go maps.Clone 会复制一个新的 map 容器,并在输入为 nil 时保留 nil 语义。本文从配置快照场景说明 nil 与空 map 的区别、顶层修改的独立性,以及嵌套切片仍共享的浅复制边界。
-
对比 Goose UpTo 与 UpByOne 的迁移范围,说明目标版本上限、当前版本、版本空档和单次执行的关系,并给出命令行与 Go API 的选择方法。
-
用 go-audio/wav 的 PCMBuffer 固定容量读取 WAV 整数 PCM,掌握 n、声道帧边界、EOF 与 Err 的处理方式,避免 FullPCMBuffer 带来的整段内存占用。
-
httptest.NewRequest 构造的是直接交给 handler 的入站测试请求,RemoteAddr 的固定值是稳定的默认哨兵,不代表真实客户端地址。本文说明它与 target、Host、Proto、TLS 的关系,并给出覆盖字段和改用 httptest.Server 的判断方式。
-
解释 Go token.FileSet.AddFile 的 base、size 与 Pos 区间关系,说明旧 base 为什么不能复用,并给出连续加入源码文件的安全写法。
-
x509.Certificate.DNSNames 表示证书 Subject Alternative Name 中声明的 DNS 名称集合。读取它适合做展示和排查;真正判断主机名是否匹配,应优先使用 VerifyHostname,涉及信任链时再调用 Certificate.Verify 并传入 VerifyOptions.DNSName。
-
Go http.Request.Clone 会为请求副本隔离 Header 映射,但 Body 仍是浅拷贝。本文用最小示例讲清 Clone、WithContext 和 Header.Clone 的边界与推荐写法。
-
Go HTTP Cookie 是否发送,不只取决于 Cookie 名称,还取决于请求主机和路径。本文用 cookiejar 解释 Path、Domain 的匹配边界,并给出最小排查示例。