Go语言技术文章
-
讲解 Go multipart 上传文件名的安全处理:原名只作展示,限制请求体,按内容识别类型,生成随机存储名,并用 O_EXCL 防止覆盖已有文件。389 收藏 -
解释 Go slog LogValuer 递归引用为何会得到错误值,拆解 Value.Resolve 的有限求值、Group 边界、Handler 处理方式和四组测试。158 收藏 -
Go multipart.Reader 的 ReadForm 不会让所有文件都永久驻留内存,但 maxMemory 只控制解析预算的一部分。本文用 MaxBytesReader、ReadForm 和 RemoveAll 组合出可控的上传处理方案,并解释 ErrMessageTooLarge、临时文件和部件数量限制。241 收藏 -
解释 Go slog ReplaceAttr 中 groups 为空、零值 Attr、空名称 Group 内联的差别,并给出按分组路径脱敏、删除内置字段和避免回调递归的安全写法。405 收藏 -
用一个可复用的 Go 上传请求构造器讲清 multipart.Writer.SetBoundary 的正确调用顺序、字符与长度限制、Content-Type 同步方式,以及 Close 收尾错误处理。288 收藏 -
fstest.TestFS 报错通常不是测试器过于严格,而是自定义 fs.FS 在路径合法性、目录元数据、文件重复读取、expected 清单或并发修改上没有满足 io/fs 约定。本文用 MapFS 拆解定位顺序和修复边界。156 收藏 -
Go 的 multipart.Reader 需要保留 quoted-printable 部件时,应使用 NextRawPart。本文对比 NextPart 的透明解码行为,演示安全解析 boundary、保存原始 body,以及按需显式解码的实现边界。413 收藏 -
Go fs.Glob 的设计就是忽略目录读取时的 I/O 错误,默认只把非法匹配模式作为返回错误。本文拆解 GlobFS 与 ReadDir 分支,并给出用 WalkDir 保留目录错误的处理方案。427 收藏 -
介绍 Go slog.Group 如何组织 request、order、payment 等嵌套业务字段,并比较 Logger.WithGroup、LogValuer、JSONHandler 与 TextHandler 的适用方式。447 收藏 -
解释 Go fs.Sub 为什么拒绝包含 .. 的路径,拆解 ValidPath 规则,并比较 embed.FS、os.DirFS、os.Root 的适用边界与排错方法。433 收藏 -
Go 的 log/slog 可以把 HandlerOptions.Level 设置为 slog.LevelVar,在不重建 Logger 的情况下运行时切换最低日志级别。本文给出完整配置示例,说明 Set、Level、Enabled 的边界,以及多 Handler、并发更新和昂贵参数计算时的处理方式。340 收藏 -
讲清 Go fs.WalkDir 中 SkipDir 与 SkipAll 的区别:目录剪枝、普通文件上的特殊语义、全局提前结束、普通错误和上下文取消的正确处理方式。283 收藏 -
用 Go slog.LogValuer 延迟展开业务对象:以轻量包装器配合 GroupValue 控制字段、脱敏和派生计算,并说明自定义 Handler、可变对象与 Resolve 的边界。443 收藏 -
解释 Go io.TeeReader 如何同步把读取内容写入旁路 Writer,以及写入失败为何会从 Read 返回,并给出 n、err、部分写入和重试边界。298 收藏 -
讲清 Go slog.HandlerOptions ReplaceAttr 的统一字段清洗方案,覆盖敏感字段脱敏、内置键重命名、分组路径判断、删除字段与回归测试。128 收藏