Go语言技术文章
-
bytes.Reader 的 Seek 只计算并保存逻辑游标,因此正数位置可以超过底层切片末尾;真正读取时才返回 io.EOF。本文结合源码语义说明原因、后续行为和严格边界写法。347 收藏 -
使用 bytes.Buffer 分批处理数据时,应先用 Len 判断完整批次,再用 Next 消费固定长度;不足一批的尾部继续留在缓冲区。本文给出同步、异步和收尾写法。128 收藏 -
bytes.Buffer.Next 会像 Read 一样推进读取位置,而 Len 只统计未读部分,所以调用 Next 后长度会减少。本文说明超量读取、Bytes 关系和返回切片生命周期。139 收藏 -
Go bytes.CutPrefix 可以把可选协议前缀解析成 after 与 found 两个明确结果。本文用协议帧示例说明前缀命中、旧格式兼容、空字段校验和 bytes.Clone 的生命周期边界。283 收藏 -
bytes.CutPrefix 未匹配前缀时会返回原始切片和 false,返回值依然有效且不产生副本。本文说明底层数组共享、修改风险、空前缀及 bytes.Clone 的使用边界。303 收藏 -
用 Go bufio.Writer.AvailableBuffer 配合 append 和 strconv.AppendInt 构造短记录,减少循环中的临时切片分配,并说明容量不足、切片生命周期、Flush 和 Go 版本兼容边界。226 收藏 -
bufio.Writer 会把第一次底层写入错误保存在内部,后续 Write 和 Flush 都返回这项粘性错误。本文说明部分写入、io.ErrShortWrite、Reset 与安全重试的边界。143 收藏 -
Go bufio.Reader.Discard 按固定字节数跳过协议头部,重点说明返回数量、短输入、负数参数和动态长度边界。365 收藏 -
讲解 Go bufio.Scanner 如何编写保留分隔符的 SplitFunc,覆盖 advance、token、atEOF、跨缓冲区匹配和尾部残片处理。121 收藏 -
Go bufio.Scanner 报 too many empty tokens,通常不是缓冲区太小,而是自定义 SplitFunc 在 EOF 下反复返回未推进的非 nil token。本文用返回值关系说明根因、修复方式和 Reader 的适用边界。495 收藏 -
说明 Go bufio.Scanner 读取超长单行时如何用 Buffer 调整 token 上限,正确处理错误与内存边界,并判断何时改用 bufio.Reader。175 收藏 -
Go bufio.Scanner 返回 token too long,通常是单个 token 超过默认缓冲上限。本文说明 Scanner.Buffer 的正确配置时机,并给出长记录切换 bufio.Reader 的处理方案。422 收藏 -
Go archive/zip 的 Writer.Copy 用于原始条目复制,不负责重建文件头。本文解释 Copy、CreateRaw 与 CreateHeader 的边界,并给出修改 ZIP 元数据和重新压缩内容的实现方式。334 收藏 -
说明 Go archive/zip 如何使用 OpenRaw 和 CreateRaw 原样复制已压缩条目,覆盖 FileHeader 复制、中央目录收尾、重名处理、ErrInsecurePath 与 CreateHeader 的适用边界。442 收藏 -
介绍 Go 中如何让 zip.Reader 作为 fs.FS 使用,覆盖磁盘 ZIP、内存 ZIP、fs.ReadFile、fs.ReadDir、fs.Sub、路径约束与资源关闭。253 收藏