Go语言技术文章
-
zip.Writer.Close 不只是关闭一个对象,它还要结束当前条目、补写中央目录和结束记录,并刷新内部缓冲,因此部分写入错误会在最后才返回。本文拆开这些职责,说明为什么必须同时检查 Create、Write 和 Close。110 收藏 -
gzip.Reader 的完整性校验依赖读取到 EOF,不能用 Close 成功替代。本文区分读取与关闭错误,提供限制解压大小的完整示例,并说明提前停止、多成员和底层资源的处理边界。417 收藏 -
io.TeeReader 没有内部缓冲,读取过程会把数据同步写给 Writer;如果 Writer 写入失败,错误会沿 Reader 的 Read 返回。本文从接口职责、n 与 err 的判断和适用边界解释这个看似延迟的错误。410 收藏 -
Go 反射读取字段时,CanInterface 用来判断 Value.Interface 是否可以安全调用。本文用导出字段、未导出字段、无效 Value 和 CanSet 对照说明判断顺序,给出通用读取函数的降级写法。242 收藏 -
io.Copy 把正常 EOF 视为成功结束,零字节复制可以返回 nil。结合临时文件示例,区分空文件、末尾偏移与受限输入,并说明非空判断、复制数量和目标收尾的职责。262 收藏 -
Go os.DirEntry.Info 获取的是目录项对应的 FileInfo,但条目在目录读取后被删除或重命名时可能返回错误;符号链接场景还要区分链接本身与目标。本文给出简洁的读取和错误处理边界。222 收藏 -
filepath.Abs 处理相对路径时会把当前工作目录作为解析基准,因此从不同目录启动同一个 Go 程序可能得到不同绝对路径。本文用静态关系和排障示例说明原因、检查方法与路径基准边界。227 收藏 -
Go 文件关闭、EOF 和缓冲读取属于不同状态。通过直接读取、缓冲层和提前关闭的示例,解释错误差异的来源,并用明确的资源归属与错误链分类修复导入流程。315 收藏 -
os.WriteFile 的 perm 参数只在创建新文件时参与权限设置,覆盖已有文件时会保留原权限。本文从 PathError、父目录、运行身份和只读挂载四层排查 permission denied,并说明何时改用 OpenFile 或显式 Chmod。242 收藏 -
解释 Go os.File.ReadAt 到文件末尾返回部分数据和 io.EOF 的原因,梳理 n、len(b)、off 的判断边界与定长读取处理方式。501 收藏 -
Go bufio.Reader.ReadString 可能同时返回已读文本和 io.EOF。本文用一个按行读取的小工具说明分隔符、尾部数据与错误状态的关系,并给出先处理数据再判断错误的可靠循环。228 收藏 -
Go bufio.Reader.Buffered 返回的是当前缓冲区可以直接读取的字节数,不是底层缓冲区总容量,也不是文件或网络流的剩余长度。本文用 Read、Discard、Reset 对比说明它的实际含义。221 收藏 -
Go json.Decoder.More 只回答当前数组或对象是否还有成员,不是判断流中是否还有下一个 JSON 值。本文用数组、对象和嵌套结构说明 Token、More、Decode 的职责边界。204 收藏 -
Go encoding/csv.Reader.InputOffset 返回当前输入流的字节偏移,正好位于最近读取记录的末尾和下一条记录的开头。本文用逐条读取示例说明如何记录 CSV 行区间、处理多行字段,并把偏移用于断点与错误定位。170 收藏 -
Go copy 允许源和目标切片重叠,但不会扩展目标长度或执行深拷贝。通过队列右移、原地删除和容量对照示例,解释复制数量、清尾、长度归属及共享数据边界。254 收藏