Go教程技术文章
-
Go 的 io.SectionReader 可以把大文件映射成一个固定的字节窗口。本文用原创示例说明如何按偏移和长度读取、如何区分 ReadAt 与 Seek,以及短读、EOF 和边界校验怎么处理。225 收藏 -
用 Go 的 io.MultiReader 把多个 Reader 顺序拼成一个输入流,掌握 EOF、错误传播、分隔符和底层资源关闭的边界。434 收藏 -
Go compress/gzip 写入结束时要区分 Flush 与 Close:Flush 只推送待写压缩数据,Close 才会刷新剩余数据并写入 GZIP footer,且不会自动关闭底层文件或连接。397 收藏 -
讲清 Go compress/gzip.Header.Name 的设置时机、Writer.Close 和 Reader.Name 的读取方式,并区分 gzip 内部文件名与磁盘路径、下载文件名。251 收藏 -
Go 的 gzip.Reader 默认支持连续 gzip 成员;本文用一个小项目说明如何整体解压拼接流,以及如何关闭 Multistream 后逐个读取成员并正确处理 EOF 和校验错误。428 收藏 -
Go 的 archive/zip 不把操作系统路径直接当作 ZIP 路径使用。本文从相对路径、正斜杠、目录尾斜杠和 Writer.Close 四个边界出发,写一个可复用的 ZIP 构建示例,避免目录条目错位、穿越路径和重复名称。493 收藏 -
使用 Go archive/zip 的 FileHeader.Modified 和 Writer.CreateHeader 设置 ZIP 条目的修改时间,并处理 UTC 转换与传统 ZIP 时间精度差异。131 收藏 -
Go 标准库 archive/zip 可以通过 Reader.File 遍历压缩包条目,使用 Name 读取文件名,使用 UncompressedSize64 和 CompressedSize64 获取 ZIP64 兼容的大小信息。本文补全目录项、路径安全、资源关闭和生产检查边界。280 收藏 -
Go 的 csv.Reader 开启 ReuseRecord 后,Read 返回的记录可能共享底层数组。本文解释上一条记录被改写的原因,并给出即时处理、复制保存和 EOF 错误处理的安全写法。433 收藏 -
Go 解析带引号换行的 CSV 字段时,不要先按换行符切分;使用 encoding/csv 的 Reader 按完整记录读取,再处理字段数和 ParseError。139 收藏 -
Go encoding/csv 默认会检查每条记录的列数。不齐列数据要保留时,可将 FieldsPerRecord 设为 -1,再在 Read 循环中按表头长度标记、补齐并审计异常记录。203 收藏 -
Go 使用 bufio.Writer 写文件时,Write 可能只把数据放入内存缓冲区。本文解释 Flush、Close 与 File.Sync 的职责边界,给出正确的错误处理顺序和文件写入结束清单。420 收藏 -
Go 使用 bufio.Reader 逐行读取时,ReadString 和 ReadBytes 会保留换行分隔符;本文对比 ReadLine、Scanner,并给出正确处理 CRLF 与 EOF 最后一行的写法。498 收藏 -
用 Go 的 bufio.Scanner 自定义 SplitFunc,按换行切出带 [source] 前缀的日志记录,正确处理 atEOF、格式错误和超长 token。129 收藏 -
Go encoding/gob 传递接口值时,必须让发送端和接收端注册相同的具体类型。本文用可运行的原创示例说明 gob.Register、接口地址、指针和值类型及 RegisterName 的边界。151 收藏