Go教程技术文章
-
讲清 Go csv.Writer 如何用 UseCRLF 固定 LF 或 CRLF 行尾,并在 Flush 后通过 Error 确认最后一批 CSV 数据已经交给底层 writer。145 收藏 -
Go 的 encoding/csv 可以把引号字段里的换行当作字段内容,而不是新记录。本文用 Reader.Read、FieldsPerRecord 和 ParseError 处理多行字段,并区分 EOF、字段数不一致与引号语法错误。203 收藏 -
通过业务层、bufio.Writer 缓冲层和底层 io.Writer 的分层记录,区分 Go 写入阶段错误与最终 Flush 错误,并给出第一次错误的收口方式。325 收藏 -
Go 中可以通过 Scanner.Split 注册自定义 SplitFunc,按 || 等多字节分隔符读取记录。关键是未遇到完整分隔符时等待数据、EOF 返回余量,并用 Buffer 处理记录长度上限。338 收藏 -
Go 中使用 bufio.Reader.Peek 查看协议头或下一行前缀而不推进读取位置,本文说明逐步探测、切片复制、长行和 ErrBufferFull 的处理边界。150 收藏 -
讲清 Go os.CreateTemp 的目录与 pattern 规则,演示如何按业务前缀创建临时文件,并用 Close、Remove 和 defer 覆盖异常路径清理。117 收藏 -
Go embed.FS 的读取路径相对当前包目录,并统一使用正斜杠。本文用直接读取与 fs.Sub 两种写法说明如何处理目录前缀、跨平台分隔符和常见路径错误。195 收藏 -
讲清 Go fs.WalkDir 遇到权限错误时的回调语义,用 errors.Is 判断权限并返回 fs.SkipDir,保留其他目录继续遍历。253 收藏 -
Go io.Pipe 适合把边生成的数据直接接到 HTTP 上传请求。本文用 multipart 示例说明读写两端、Close 与 CloseWithError、请求取消和 goroutine 收尾,并列出 Content-Length、重试与可重复读取的边界。378 收藏 -
用 Go io.MultiWriter 将同一份输入同时写入文件和 SHA-256 摘要,理解顺序写入、短写、错误中断与临时文件提交,避免文件和校验值不一致。215 收藏 -
io.LimitReader 限制的是包装 Reader 在整个读取过程中的最大字节数,不是每次 Read 的缓冲区大小。本文用原创 Go 示例说明如何设置上限、正确处理 n 与 io.EOF,以及如何用 limit+1 判断源内容是否超限。299 收藏 -
Go strings.Builder 的 String 方法返回当前累计内容,后续 Write 是继续修改 Builder,而不是直接修改已经得到的 string。文章解释 Builder 缓冲区与字符串值的边界,并给出单一所有者、禁止复制非零 Builder、并发隔离和按需 strings.Clone 的处理方式。236 收藏 -
用 Go 的 bytes.Buffer 拼接多段二进制数据时,可以预留容量、连续 Write,并在结果消费或复制后 Reset 复用。本文重点说明 Bytes 的别名生命周期和安全边界。396 收藏 -
讲清 Go time.Timer Reset 返回值的真实含义,比较 Go 1.23 前后的通道语义,并给出单 goroutine、旧版本排空和发布检查的实用写法。346 收藏 -
解释 Go time.Timer Stop 返回 false 的真实含义,区分 Go 1.23 前后的 timer channel 语义,并给出兼容旧版本与现代 Go 的安全复用判断。281 收藏