-
Go regexp 默认采用左优先匹配;如果同一起点有多个候选并希望优先拿到更长结果,可以在共享使用前调用 Regexp.Longest。本文用最小示例对比默认模式、Longest 与 CompilePOSIX 的边界。
-
Go template Execute 返回错误不会撤销已写内容。本文通过请求独立缓冲隔离模板失败,说明 HTTP 状态提交、渲染与发送错误分类,以及缓冲不能保证网络原子送达的限制。
-
Go httputil.DumpRequestOut 能把客户端请求按接近线路的形式导出,并包含 Transport 追加的请求头。本文用请求副本和固定字段脱敏,解决调试请求头时泄露 Authorization、Cookie 等敏感值的问题。
-
Go 本地 HTTPS 测试需要自签名证书时,可以用 crypto/x509.CreateCertificate 直接生成带 localhost SAN 的证书。本文比较三种方案,并拆解模板、签名者、DER 与 PEM 的关系。
-
Go 源码分析中,token.Pos 不是直接可读的文件名和行列。本文用同一个 token.FileSet 说明 FileSet.File、File.Position、File.Offset 与 FileSet.Position 的配合方式,并处理 NoPos 和跨 FileSet 查询边界。
-
Go 1.21 引入 maps 包后,配置映射可以用 maps.Equal 比较键值对;本文说明基本用法、nil 与空 map 边界,以及值为切片时如何改用 maps.EqualFunc。
-
Go 默认 Transport 会按目标协议和环境变量选择代理。本文解释 HTTP_PROXY、HTTPS_PROXY、NO_PROXY 与进程缓存的关系,提供独立 Transport 的配置诊断示例及部署迁移注意事项。
-
go/types.Alias 的 TypeParams 用来读取泛型别名声明参数,TypeArgs 用来读取具体实例实参。本文通过类型检查结果说明两者的区别、Origin 的归并用途、nil 边界以及 Alias 与 Named 的选择规则。
-
Go errors.Join 可以把多个非 nil 错误组合成一个可继续用 errors.Is 和 errors.As 检查的错误树。本文解释为什么全 nil 输入会得到 nil、多个错误的文本为何换行,以及如何在批量处理里保留每个底层错误。
-
Go 里的 defer 绑定外围函数返回,不会在 for 的每轮迭代结束时自动执行。把 defer 放在长循环中处理文件、响应体或 Rows,可能让资源持续累积;本文给出抽函数、显式关闭和代码审查的取舍。
-
Go HTTP 服务端重复读取 Body 得到空内容,通常是中间件已消费原流。通过小服务说明入口限量缓存、重建读取器、错误处理与关闭边界,并区分 GetBody 和已解析对象复用。
-
Go crypto/x509.ParsePKIXPublicKey 面对的是 PKIX SubjectPublicKeyInfo 公钥数据。本文从 PUBLIC KEY PEM 输入出发,说明如何解码、解析并用类型分支识别 RSA、ECDSA、Ed25519、ML-DSA 与 X25519 公钥,顺带厘清它和完整证书、PKCS#1 公钥的边界。
-
Go http.Cookie.String 会根据字段组合 Cookie 或 Set-Cookie 文本,但非法 Name 会直接得到空字符串,非法 Domain 会被丢弃,Value 和 Path 中的非法字节会被清理。本文结合 Valid 说明怎样在发送前判断最终格式。
-
Unicode 规范化统一码点表示,不保证 UTF-8 字节数缩小。本文解释分解与组合排除导致的长度变化,给出 NFC 存储函数,并区分输入上限、结果上限和字符计量。
-
Go x/text/encoding/japanese 的 EUCJP 解码出现替换字符,通常不是 UTF-8 字符串本身坏了,而是源字节并非完整且正确的 EUC-JP。本文按输入编码、解码 API 和流式分块三个层面排查,并给出 Bytes 与 Reader 的用法。