Go教程技术文章
-
用 archive/zip 的 FileInfoHeader 和 CreateHeader 保留 ZIP 条目的 Unix 权限、目录类型与可执行位,并说明读取复核、路径安全和跨平台边界。412 收藏 -
Go 使用 gopkg.in/yaml.v3 读取配置时,应先把默认值写入结构体,再解码 YAML;这样文件中出现的字段会覆盖默认值,省略字段仍保留默认策略。本文还说明显式零值、未知键和严格解码的处理边界。412 收藏 -
用 io.LimitReader、max+1 探测和 http.MaxBytesReader 为 Go ReadAll 设置输入大小上限,区分截断、超限和读取错误。412 收藏 -
filepath.Base 会先去掉末尾路径分隔符,再提取最后一个元素;空路径返回点号,只有分隔符的路径返回单个分隔符。本文用边界表和可复用代码说明这些结果,并区分 filepath 与 path 的使用场景。412 收藏 -
Go io.SectionReader 的 ReadAt 使用 section 内相对偏移,不会推进 Read 使用的当前读取位置。本文说明 base、当前偏移和 limit 的边界,给出定位读取、短读和 EOF 的处理方式。412 收藏 -
Go archive/zip 的 Reader.Open 可以按 fs.FS 的路径语义直接打开 ZIP 成员。本文说明如何使用斜杠路径读取指定文件、关闭返回的 fs.File,并处理成员不存在、前导斜杠、父目录和遍历元数据等边界。412 收藏 -
Gock 可以为同一个 HTTP 方法和路径注册多条模拟规则,并按 FIFO 顺序消费不同响应。本文用 Times(1) 组合状态码与 JSON,说明连续请求、规则耗尽、未匹配判断和清理边界。412 收藏 -
固定正则表达式不要在每次请求中重复编译:本文用 Go regexp 说明初始化复用、并发读取、动态表达式缓存和错误边界。411 收藏 -
Go bufio.Reader.ReadLine 返回 isPrefix 并不表示读取失败,而是说明当前 line 只是长行的一段。本文用原创 Go 示例说明如何拼接片段、处理 EOF 与 CRLF,并封装单行读取接口。411 收藏 -
bufio.Reader.UnreadRune 不是任意读取后的通用回退按钮,它只接受紧邻 ReadRune 的一次回退。本文从源码状态、ErrInvalidUnreadRune 触发条件和 UTF-8 解析示例说明严格配对规则。411 收藏 -
Go 中不要用文件后缀猜测打开对象的类型。本文用 os.File.Stat 获取 FileInfo,再通过 Mode 的 IsDir 和 IsRegular 判断目录、普通文件及其它类型,同时处理 Stat 错误和文件句柄关闭。411 收藏 -
用 Go os.ReadDir 按文件名获得稳定目录顺序,并通过 DirEntry.Type 跳过符号链接;同时解释 File.ReadDir 的目录顺序和分批读取边界。411 收藏 -
Go billy 的 memfs 可以通过 Filesystem.Chroot 把 workspace 变成相对路径工作根。本文用最小 Go 示例说明如何创建、读写文件,并处理不存在目录、越界路径和 v5/v6 导入差异。410 收藏 -
Go 的 filepath.Glob 只会把模式语法错误报告为 ErrBadPattern,无匹配通常是 nil、nil,目录读取等文件系统错误则会被忽略。本文从批处理中的误判现场出发,讲清三种结果如何区分、如何复现和怎样设计错误分支。410 收藏 -
用 Go 标准库 maps.Clone 复制 map,区分 map 容器独立与切片等 value 仍共享底层数据的边界,并给出可验证的复制方案。410 收藏