Go教程技术文章
-
Go archive/zip 将 ZIP 条目的扩展字段放在 FileHeader.Extra 中。本文用安全的 TLV 遍历读取原始字节,处理未知字段、截断输入、重复字段与条目遍历边界。385 收藏 -
Go compress/gzip 的 Reader 会在创建或 Reset 后暴露 gzip Header。本文说明怎样读取 Header.Name、为什么文件名可能为空,以及多成员 gzip、完整读取和校验关闭的边界。318 收藏 -
Go读取ZIP的UTF-8声明应检查Flags第11位,文件名字节合法性与NonUTF8则需分别理解。本文提供只读观察程序,并解释ASCII、中文名称、注释和写入标志的差异。163 收藏 -
Go 的 archive/tar 读取截断归档时,正常结束与数据不完整不是同一个结果。本文用 Reader.Next、Header.Size、io.Copy 和 io.ErrUnexpectedEOF 说明如何定位截断位置,并在流式解包中安全停止。244 收藏 -
Go archive/tar 的 Header.AccessTime 不是赋值后就一定会写入。本文说明 FormatPAX、FormatGNU 与未指定格式的差异,给出写入、读取和零值判断示例,并梳理访问时间的精度与兼容取舍。118 收藏 -
Go读取tar成员类型应使用Reader.Next返回的Header.Typeflag。本文比较IsDir与名称后缀,提供只读清单程序,并说明旧式标志规范化、链接、未知类型和EOF的处理。433 收藏 -
Go embed 的“文件不存在”分成构建期匹配失败和运行期路径缺失两类。本文用 embed.FS 说明如何判断 fs.ErrNotExist,并设计不会因可选资源缺失而无法构建的目录结构。158 收藏 -
Go embed 配合 fs.Glob 可以在只读的 embed.FS 中按 path.Match 规则查找内嵌模板。本文给出嵌入、匹配、解析和安全边界的完整写法。323 收藏 -
Go embed.FS 默认保留嵌入目录的完整路径;用 io/fs 的 fs.Sub 可以把某个子目录包装成可复用的 fs.FS 根,让模板、静态资源和通用读取代码只处理根内相对路径。本文说明初始化、下游接入、路径边界和回滚方式。410 收藏 -
Go 的 filepath.Clean 可以按当前操作系统规则清理重复分隔符,但它同时会处理 .、..、空路径和分隔符风格。本文用边界示例说明清理结果、适用位置和性能测量口径。131 收藏 -
Go filepath.Match遵循目标操作系统规则。本文通过反斜杠差异、单文件名筛选函数及预期用例,解释整串匹配、大小写和ErrBadPattern,并区分模式命中与跨平台文件名合法性。142 收藏 -
filepath.WalkDir 遇到根目录初次检查失败时,回调会收到 d=nil 和原始 err。本文用 Go 示例说明如何先处理错误、区分根目录不存在与权限问题,并把遍历结果安全交给上层。475 收藏 -
Write 返回成功不代表数据已经到达稳定存储。本文用 Go os.File.Sync 拆开写入、同步、关闭和文件替换的边界,给出可复用的错误处理写法。463 收藏 -
Go 文件操作失败时,不要比较错误字符串。本文用 errors.Is 配合 fs.ErrNotExist 和 fs.ErrPermission 区分文件不存在、权限拒绝及其它错误,并保留 PathError 上下文。185 收藏 -
Go OpenFile 用创建标志和八进制权限位控制新文件。本文用拒绝覆盖的完整示例解释0600、写入和关闭错误,以及已有文件、umask和Windows权限模型的差异。251 收藏