Go语言技术文章
-
Go encoding/xml 遇到 XML 前缀从 p 变成 ns 后匹配失败时,应比较命名空间 URI 与本地名,而不是比较短前缀。本文用 xml.Name、XMLName 标签、DefaultSpace 和最小回归样例说明排查与修复边界。304 收藏 -
Go x/text/unicode/norm.Iter 会把输入按目标 Unicode Form 规范化,并按可独立处理的边界返回片段。本文用 Go 示例说明 InitString、Done、Next、Pos 和 Seek 的配合,以及组合字符和字节偏移的注意事项。304 收藏 -
本文围绕 Go crypto/cipher.NewGCMWithRandomNonce,说明如何让 Seal 自动生成并携带随机 nonce,再由 Open 自动提取 nonce 完成 AES-GCM 解密,并整理版本、密钥和密文长度边界。304 收藏 -
Go GOPROXY 返回 404 时,先不要急着更换代理。本文从模块路径、主版本后缀、可用版本列表、代理回退规则和私有模块配置五个方面定位问题,配合 go list -m -versions 与 go mod download 找到真正缺失的是路径、版本还是来源。304 收藏 -
Go replace 的本地目录替换不会随依赖库自动传递。结合应用与库发布场景说明主模块作用域、工作区掩盖、版本迁移和独立消费者检查。304 收藏 -
go-diff 的 []Diff 适合在内存中查看,但传输或落库时可以用 DiffToDelta 编成紧凑文本。本文说明 delta 的三类 token、原文基准、Unicode 字符计数,以及如何还原并判断这种存储是否真的节省空间。304 收藏 -
Go runtime/asan 实际对应 go build -asan 与 AddressSanitizer 的协作入口,适合排查 cgo 连接的 C/C++ 内存问题。本文说明构建方式、报告阅读、泄漏开关和平台限制。304 收藏 -
Go path.Match 中的 ** 不是多级目录通配符,连续两个 * 仍然不能跨过斜杠。本文用最小示例拆开单层与多层路径的差异,并说明如何区分 false、ErrBadPattern 以及逐段匹配方案。304 收藏 -
http.ProtocolError已弃用,无法覆盖全部HTTP协议相关错误。本文按请求、状态和正文读取阶段拆解客户端失败,用完整代码保留错误链并区分取消、超时与历史类型线索。304 收藏 -
Go 解析结构体时,嵌入字段的 ast.Field.Names 为什么看起来为空?本文从排查现场拆开说明 Names=nil 的 API 语义、Field.Type 的类型表达式和 FieldList.NumFields 的计数规则,帮助静态分析器正确处理 T、*T、P.T 等嵌入字段。304 收藏 -
Goja 执行 JavaScript 后,可以使用 Runtime.ExportTo 将对象直接导出到 Go 结构体;本文说明字段映射、嵌套对象、数组和错误处理的写法。303 收藏 -
Go go-toml v2 自定义 TOML 解码的完整做法:实现 unstable.Unmarshaler、启用 Decoder 接口,并处理嵌套表、默认值和业务错误边界。303 收藏 -
Go HTTP 偶发 503 应通过可信请求标识关联代理最终状态、上游尝试和应用拒绝日志,区分响应生成层与依赖根因。给出 Nginx 日志配置和 Go 失败分支示例,并说明错误拦截、缓存、超时包装及重试的判断边界。303 收藏 -
读取请求体、文件或消息流时,直接调用 io.ReadAll 会一直读到 EOF。本文用 io.LimitReader 设置最大读取范围,再用一字节探测区分正常结束、刚好达到上限和真正超限。303 收藏 -
Go ReverseProxy改写请求头需要区分Director与Rewrite、目标URL与HTTP Host。本文给出固定上游的原创示例,说明转发元数据的重建和继承边界,并归纳迁移时的选择规则。303 收藏