Go教程技术文章
-
Go 的 archive/tar 适合流式读取归档。本文区分 Header 与 payload,演示只保留文件头元数据、用固定缓冲区消费内容,并说明超大条目和异常归档的内存控制边界。155 收藏 -
用 archive/tar 解包时,先读取 Header.Mode 和 Typeflag,再按成员类型创建目录、写入文件并恢复权限,避免脚本或只读文件的模式丢失。408 收藏 -
Go 标准库 archive/tar 能读取 GNU/PAX 稀疏归档,但 Writer 当前不支持编码稀疏文件,因此不存在一组 Header 字段能直接开启稀疏写入。本文解释 Size、Typeflag、Format、PAXRecords 的边界,并给出普通条目和 GNU tar --sparse 两种可靠方案。320 收藏 -
fs.Sub 可以把已有 FS 映射成以某个子目录为根的视图,嵌套调用时每一层路径都相对当前子 FS 解析。本文拆开根目录变化、符号链接风险与 os.Root 的安全边界,给出可复查的组合方式。367 收藏 -
io/fs 使用斜杠分隔的虚拟路径,而本地文件 API 服从操作系统规则。本文拆开 fs.ValidPath、filepath.Localize 和 filepath.FromSlash 的职责,给出可复用的跨平台转换写法。224 收藏 -
fs.ValidPath 适合校验传给 fs.FS.Open 的斜杠路径,但它不是本地路径检查器,也不会处理 URL 解码、符号链接和真实文件系统边界。本文用有效与无效样例梳理规则,并给出 HTTP、归档和本地路径场景的安全写法。374 收藏 -
把临时文件处理从 filepath.Join、os.CreateTemp 和 os.Rename 迁移到 os.Root,关键是先固定根目录,再让创建、写入、改名和清理都使用相对路径。本文用一个生成 JSON 报告的小项目拆解迁移步骤,并说明 Go 版本、资源关闭和越界路径的边界。221 收藏 -
Go 1.24 的 os.Root 会在目录边界内解析符号链接,本文区分 Root 的访问校验与 Root.Symlink 的创建语义,说明根内链接、越界目标、绝对链接和资源释放的处理方式。160 收藏 -
Go 处理外部文件名时,filepath.Join 不能单独构成目录访问边界。本文结合 os.OpenInRoot 和 os.Root,说明固定目录、相对路径、符号链接、Root 生命周期以及平台限制应该怎样设计。331 收藏 -
go fix 会直接改写 Go 源码。本文从模块边界、包模式、构建配置、差异预览和 Git 检查点入手,整理一套可回滚的执行准备清单。421 收藏 -
go fix inline 不是普通编译器优化,而是依据 //go:fix inline 注释对兼容入口提出源码替换建议。本文用函数、常量、类型别名和测试文件四个场景说明识别条件,并给出安全预览与落盘方法。468 收藏 -
用 go fix modernizers 批量迁移旧标准库写法,先预览差异,再按 fixer、Go 版本和构建平台执行,并用测试确认语义边界。403 收藏 -
Go fuzzing 不可重复,通常不是随机输入本身的问题,而是 fuzz target 读了真实时间、共享状态或不可控外部依赖。本文用依赖接口、Fake 实现、固定种子和失败语料目录,整理出可重复运行的 Go 模糊测试结构。232 收藏 -
Go fuzzing 找到失败输入后,如何把大而难读的样本缩成稳定的回归语料?本文说明最小化参数、失败语料目录、生成语料缓存和修复后的 go test 回归流程。118 收藏