Go语言技术文章
-
Go Reader 的字节分块不保证 UTF-8 字符边界。本文给出持续使用 bufio.Reader.ReadRune 的完整示例,区分半个编码、非法字节、合法 U+FFFD 与流末尾截断,并说明批量解码的状态约定。318 收藏 -
Go 的 AddDate 按 Location 的日历规则加一天,DST 切换日可能对应 23 小时或 25 小时;如果业务要固定时长,应使用 Add。本文梳理时区、缺失时间、重复时间和比较持久化边界。241 收藏 -
Go 的 os.ReadFile 遇到符号链接时默认读取链接目标内容;本文对比 ReadFile、Stat、Lstat 和 Readlink,说明如何区分目标文件、链接自身与链接保存的路径。483 收藏 -
Go HTTP/2 并发升高后请求固定批次排队,通常要先区分每连接流上限、客户端跨连接策略和后端处理变慢。本文说明如何读取证据,并用 net/http 的 HTTP2 配置修复对应边界。193 收藏 -
Go 时区缩写解析成功不代表偏移正确。本文解释 Parse 的本地时区依赖与未知缩写回退,给出显式地区解析旧输入、RFC3339 数字偏移交换新数据的写法及边界。275 收藏 -
从 Go HTTP/2 的连接错误和 HPACK 解码证据出发,区分非法索引、字符串编码、动态表更新与头部大小问题,并给出日志分类和修复边界。162 收藏 -
HTTP/2 的 GOAWAY 不是普通业务错误,它表示连接不再接受新流,并用 last-stream-id 划出可能已处理的范围。本文结合 Go net/http 的请求体重放条件,给出幂等请求、非幂等请求和监控证据的有限重试策略。410 收藏 -
Golang · Go问答 | 2天前 | 日志 · 标准库 · go · 故障排查 · Go 结构化日志 ReplaceAttr log/slog WithGroup WithAttrs slog.Handler
Go log/slog 中字段消失,通常不是 Logger.With 没有传进去,而是 ReplaceAttr 返回了零值 Attr,或自定义 Handler 在 WithAttrs、WithGroup 中丢掉了状态。本文按调用链定位原因,并给出只过滤明确键名的修复写法。417 收藏 -
slog 的普通 error 属性默认不是错误链对象。本文给出 LogValuer 日志适配器,显式输出安全消息、错误码和操作名,并说明包装错误、字段类型迁移与 Handler 的边界。357 收藏 -
slog JSONHandler 输出字段顺序变化时,先区分 JSON 语义变化与文本排列变化。本文说明 With 属性、调用属性、分组和 ReplaceAttr 的影响,并给出结构化测试与固定字节协议的处理边界。300 收藏 -
Go 的 io.SectionReader 会把读取限制在指定区间内。本文说明越界短读的原因、Read 与 ReadAt 的偏移差异,以及如何用 ReadFull 和 n/err 处理固定长度与尾部数据。399 收藏 -
io.Copy 会优先走源端 WriterTo,再看目标端 ReaderFrom;本文用原创示例说明 ReaderFrom 如何改变复制路径,以及如何用接口包装固定行为。188 收藏 -
Go io.Pipe 的写端提前失败时,普通 Close 会让读端只看到 EOF。本文按读写两端的职责解释 CloseWithError、n 与 err 的处理方式,以及关闭顺序和 ErrClosedPipe 的边界。148 收藏 -
Go 正则重复捕获组不会保存每次参与的历史值。本文区分完整匹配与子组槽位,给出先约束记录再提取所有单项的写法,并说明 FindAll、命名组和字节索引的边界。480 收藏 -
Go 正则表达式能够编译成功,不代表 \d、\w 或 ASCII 字符类会匹配中文等 Unicode 文本。本文用固定样本拆开字符类语义、原始字符串写法、rune 边界和复查口径,给出可维护的 Unicode 匹配方案。332 收藏