Go教程技术文章
-
讲清 Go bufio.Reader.ReadSlice 遇到超长行时的 ErrBufferFull 语义、切片生命周期与分片处理方法,并加入单行上限、换行符和 EOF 策略。233 收藏 -
讲清 Go bufio.Reader.Peek 预读固定协议头时的参数、缓冲区和切片生命周期边界,并用 8 字节 TCP 协议头示例处理 ErrBufferFull、截断输入、长度校验与安全消费。265 收藏 -
io.Reader 一次 Read 不保证填满缓冲区。本文用固定 8 字节头和变长负载示例,讲清 io.ReadFull 的补齐语义、EOF 与 ErrUnexpectedEOF 的区别、长度上限和网络读超时。295 收藏 -
Go io.TeeReader 可以在下游继续读取原始上传流的同时,把已经读出的字节同步写给统计器。本文用一个保留 Close 的 ReadCloser 包装器记录实际流量,并说明同步写入、错误传播、提前停止和 Content-Length 的边界。379 收藏 -
Go 的 io.Copy 会流式复制大文件,并优先使用 WriterTo 或 ReaderFrom;覆盖旧文件时仍要显式截断。本文给出 O_TRUNC 最小写法,以及用 CopyN、临时文件、Sync 和 Rename 处理提前 EOF 与失败回滚的实现。344 收藏 -
Go 的 fs.ValidPath 校验的是 io/fs 虚拟文件系统名称:必须是 UTF-8、非根式、以正斜杠分隔,不能含空段、点段或父目录段,只有“.”可表示根目录。本文说明它与 filepath、go:embed 模式的区别,并给出安全拼接和测试写法。187 收藏 -
围绕 Go filepath.Match 的方括号字符类,说明转义、字符区间、ErrBadPattern 以及 Unix 和 Windows 的差异,给出可直接改成测试的写法。222 收藏 -
filepath.Rel 会按当前操作系统的分隔符、绝对路径和卷名规则计算词法相对路径。本文给出可复用封装,说明不同盘符、绝对与相对混用、ToSlash、符号链接及安全边界,并用表驱动测试验证。412 收藏 -
Go 的 URL.Redacted 会保留用户名并把 Userinfo 密码替换为 xxxxx,但不会处理查询参数中的 token。本文从日志泄露路径出发,给出标准方法、强化脱敏封装、结构化审计字段和回归测试。246 收藏 -
url.ParseRequestURI 面向 HTTP 请求目标,只接受绝对 URI、以斜杠开头的绝对路径或星号形式。本文用迁移清单梳理它与 url.Parse 的差异、字段结果、失败输入,以及语法通过后仍需补充的路由和安全策略。174 收藏 -
Go 的 url.Values 本质是 map[string][]string。批量合并查询参数时,Add 负责追加,Set 负责替换;配合 Clone 和 Encode 可以实现有优先级、可复用且不污染原输入的 URL 查询构造。493 收藏 -
Go 的 URL.Fragment 保存解码语义,RawFragment 仅是原始编码提示。本文说明 EscapedFragment 如何验证并保留 %2F 等表示,以及修改、构造和批量输出时如何避免二次编码。348 收藏 -
使用 Go net/url.Values 管理查询参数,借助 Encode 完成键排序和 URL 编码,再安全写回 url.URL。文章覆盖多值参数、空值、已有 RawQuery 和解析错误等边界。129 收藏 -
Go 的 ResolveReference 能按 RFC 3986 正确组合相对地址,但它也会接受绝对 URL 和网络路径引用。本文给出同源校验、目录边界限制与表驱动测试写法。141 收藏 -
filepath.EvalSymlinks 会逐层解析路径中的符号链接并清理结果。本文给出最小用法、多层相对链接示例、断链和链接环错误处理,以及把最终路径限制在受信根目录内的检查方法。410 收藏