Go语言技术文章
-
Go 读取邮件时,mail.ReadMessage 负责拆分邮件头,中文 Subject 用 mime.WordDecoder.DecodeHeader 解码,中文 From 则用带 WordDecoder 的 AddressParser 解析;遇到 GBK 等字符集时再补 CharsetReader。485 收藏 -
用 Go 的 io.Pipe 把压缩器输出和 HTTP 请求串成一条流,说明读写端协作、错误传递、请求结束和可复查验证的关键边界。485 收藏 -
用 Go 标准库 log/slog 的 Handler.WithGroup 组织请求、用户和数据库字段,比较文本与 JSON 输出,并验证自定义 Handler 的实现边界。485 收藏 -
Go 的 json.Decoder 开启 DisallowUnknownFields 后,客户端多传字段会变成解码错误。本文用配置接口示例说明严格校验的适用边界、兼容新增字段的处理方式、错误定位和测试清单。485 收藏 -
Go slog 适合把请求 ID、用户标识和耗时统一写入结构化日志。本文从 HTTP 请求场景出发,给出 context 传递、Handler 过滤和字段命名的最小写法,并说明哪些信息不应直接写入日志。485 收藏 -
Go scanner.Init 报 file size does not match src len 时,根因是 token.File 的 size 与最终源码 []byte 的字节长度不同。本文给出按 len(src) 建立文件、扫描和源码变更后重建位置元数据的处理方案。484 收藏 -
Go jsontext.Decoder 读取数组时,EndArray 是合法的结构结束 token,不是多余数据。本文用 Kind、StackDepth 和最小循环示例说明正确退出方式,以及 ReadValue 的边界。484 收藏 -
Go net.ListenConfig.Listen 报地址已被占用时,先确认 bind 阶段的冲突端点,再核对 PID、tcp/tcp4/tcp6 地址族和程序生命周期,最后才考虑平台相关的端口复用选项。484 收藏 -
sync.Map.Clear 会删除当前条目,但不会替你建立清空期间的业务屏障。本文用并发缓存重置流程说明 Load、Store 的可见性、旧请求回写风险和代际版本号方案。484 收藏 -
Go json.Compact 会删除 JSON 结构中的无意义空白,但保留字符串内容,并把结果追加到 bytes.Buffer。本文说明最小调用、错误处理、已有前缀和它与 gzip、Indent、Marshal 的边界。484 收藏 -
StringLen 可避免为查询长度而展开完整字符串,但不保证无限输入或固定耗时。本文说明 int64、Unknown、panic 与字节单位边界,给出长度展示组件及分阶段资源预算建议。484 收藏 -
Go 1.27 的 go fix 新增 slicesbackward modernizer,可把符合条件的手写切片反向循环迁移到 slices.Backward。本文说明如何预览变更、何时保留索引变量,以及生成文件和构建标签带来的边界。484 收藏 -
Golang · Go问答 | 3星期前 | 标准库 · 类型转换 · Go问答 · JSON Go encoding/json UseNumber Decoder json.Number UnmarshalTypeError
Go JSON 使用 Decoder.UseNumber 后,转换失败通常不是 UseNumber 失效,而是 json.Number 与目标字段语义不匹配。本文从原始字面量、Int64/Float64 转换和 UnmarshalTypeError 字段路径入手,定位格式、范围与协议问题。484 收藏 -
Go json.Decoder 可能提前从底层 Reader 读取数据,Decode 返回后仍有一部分字节停留在内部缓冲。本文说明 Buffered 的准确边界、如何和底层 Reader 余量拼接,以及为什么下一次 Decode 或 Token 后不能继续依赖旧 reader。484 收藏 -
Go http.Client 可以在 CheckRedirect 中读取 via 请求链并设置跳转上限。本文区分重定向次数与请求总数,说明普通错误和 http.ErrUseLastResponse 对 Response、Body 和 url.Error 的不同影响。484 收藏