Go语言技术文章
-
用一个可切换位序的 Go LZW 往返小工具讲清 NewWriter 的 LSB 与 MSB 选择:GIF 用 LSB,PDF 用 MSB,自定义协议需显式约定,TIFF 应使用专用实现。150 收藏 -
解释 Go flate.NewReaderDict 遇到错误字典时为何可能报 CorruptInputError,也可能无错误却产生错误字节,并给出字典 ID、输出上限、完整性校验与 zlib 替代方案。465 收藏 -
说明 Go gzip.Reader 默认如何连续读取拼接的 gzip 成员,以及如何用 Multistream(false) 和 Reset 保留成员边界并逐段处理。301 收藏 -
解释 Go cmp.Compare 遇到 NaN 时的返回规则:NaN 小于任意非 NaN、NaN 与 NaN 相等、负零与正零相等,并给出默认排序及 NaN 靠后的定制写法。258 收藏 -
介绍 Go cmp.Or 如何按从左到右的顺序返回第一个非零候选值,并通过配置覆盖示例说明零值语义、comparable 类型约束与不适用边界。239 收藏 -
说明 Go bytes.Buffer.Next 的参数超过未读长度时会返回全部剩余字节并耗尽缓冲区,进一步解释切片有效期、精确定长读取和空缓冲边界。456 收藏 -
Go bytes.Buffer.ReadFrom 适合把完整 io.Reader 数据接入内存缓冲。本文说明 EOF、ReadFrom 返回值、Grow、io.LimitReader、ErrTooLarge 与 Bytes 切片所有权的边界。194 收藏 -
Go bufio.Reader.UnreadByte 只能撤回最近一次成功读到的字节,因为 Reader 只维护一个回退状态而不是历史栈。本文结合缓冲游标、失效调用和替代方案说明如何正确处理解析试探。341 收藏 -
用一个小型内存复制场景说明 Go bytes.Reader.WriteTo 的调用方式、返回值、游标推进和错误边界。466 收藏 -
解释 Go bufio.Scanner 连续空 token 停止或 panic 的根因,区分 nil token、advance 与 ErrFinalToken,并给出安全 SplitFunc 写法。296 收藏 -
讲清 Go bufio.Scanner.Buffer 的初始缓冲区、最大 token 上限与错误处理,并给出 Scanner 和 bufio.Reader 的选型边界。120 收藏 -
tar.Header.Format 变成 FormatUnknown,通常表示 Reader 虽能解析条目,却无法把其头部可靠归类为 USTAR、PAX 或 GNU;本文区分未知格式与 ErrHeader,并给出安全转存方式。397 收藏 -
用 Go archive/tar.Reader.Next 顺序遍历 tar 归档,区分 EOF、文件类型与读取边界,并给出受控提取的实现要点。337 收藏 -
zip.File.Open 返回解压后的逻辑内容并通过 io.ReadCloser 管理读取资源;OpenRaw 返回 ZIP 中未经解压的压缩载荷。本文以解析失败场景拆解两者差异,给出业务读取、内容哈希和 Writer.Copy 原样迁移的正确选择。123 收藏 -
Go 的 zip.OpenReader 负责打开磁盘上的 ZIP 归档,真正按成员名读取要调用返回值的 Reader.Open。本文给出完整函数,讲清斜杠相对路径、成员不存在、目录成员、读取上限、ErrInsecurePath 与关闭顺序。130 收藏