Go语言技术文章
-
Go Handler 读取请求体后下游为空,通常是前置组件消费了 Request.Body。本文给出解析一次传递 Payload、兼容旧下游重建 Body,以及大小限制和错误处理方案。442 收藏 -
Go 的 URL.Fragment 保存解码语义,RawFragment 仅是原始编码提示。本文说明 EscapedFragment 如何验证并保留 %2F 等表示,以及修改、构造和批量输出时如何避免二次编码。348 收藏 -
Go HTTP 中间件重复写响应头,通常是前一层已提交错误响应却仍调用后续处理器。本文从提交边界、调用链、临时探针和响应所有权测试逐层定位。270 收藏 -
使用 Go net/url.Values 管理查询参数,借助 Encode 完成键排序和 URL 编码,再安全写回 url.URL。文章覆盖多值参数、空值、已有 RawQuery 和解析错误等边界。129 收藏 -
Go ServeMux 在模式互相重叠且谁都不更具体时会在注册阶段 panic。本文用请求集合规则解释路径变量冲突、定位方法、重构策略与测试边界。350 收藏 -
Go 的 ResolveReference 能按 RFC 3986 正确组合相对地址,但它也会接受绝对 URL 和网络路径引用。本文给出同源校验、目录边界限制与表驱动测试写法。141 收藏 -
ErrWaitDelay 通常表示命令已成功退出,但 os/exec 管理的 I/O 管道在 WaitDelay 内仍未关闭。本文解释计时起点、后代进程继承描述符的常见原因、错误优先级和可落地的修复方式。333 收藏 -
filepath.EvalSymlinks 会逐层解析路径中的符号链接并清理结果。本文给出最小用法、多层相对链接示例、断链和链接环错误处理,以及把最终路径限制在受信根目录内的检查方法。410 收藏 -
Go 的 url.URL 同时设置 Path 和 Opaque 时,String 会根据 URL 形态选择层级路径或 scheme:opaque 表示,两个字段不会简单拼接。本文用最小结构对比、查询参数边界和回归清单说明正确构造方式。170 收藏 -
filepath.IsLocal 能用纯词法规则拒绝绝对路径、空路径和会逃出当前目录的路径。本文给出安全拼接函数、跨平台边界、内部点段判断、Windows 保留名说明,以及符号链接场景下使用 os.Root 的加强方案。311 收藏 -
解析 Go 查询字符串时,url.ParseQuery 可能同时返回错误和部分 Values。本文用源码顺序说明合法参数为何保留、错误项如何跳过,以及 HTTP 入口该如何选择严格策略。311 收藏 -
Go 1.23 引入 filepath.Localize,用于把 io/fs 的斜线路径安全转换为当前操作系统路径。本文比较 Localize、ValidPath 与 FromSlash 的边界,给出输入校验、跨平台错误处理和 API 选型示例。292 收藏 -
Go 的 URL.RawPath 只是 Path 的可选编码提示。只有编码形式有效且反转义后与 Path 完全一致,EscapedPath 才会采用它;否则会忽略 RawPath,并从 Path 重新生成转义结果。370 收藏 -
Go 为 exec.Cmd 设置工作目录后,应先赋值 Cmd.Dir,再调用 Cmd.Environ 并写回 Cmd.Env。本文解释正确顺序、重复环境变量覆盖规则,以及 PWD、os.Getwd、getcwd 在符号链接路径下的差异。142 收藏 -
解释 Go url.JoinPath 为什么会在输出中保留或生成百分号编码,区分 URL.Path、RawPath、EscapedPath、PathEscape 与 QueryEscape,并处理斜杠和点段边界。140 收藏