在 Go 中解压 gzip 文件需用 compress/gzip 包:先 os.Open 打开 .gz 文件,再 gzip.NewReader 包装为 io.Reader,最后用 bufio.Scanner 等读取;注意默认 Scanner 行长上限 64KB。
在 Go 语言中解压 gzip 文件(即读取 .gz 文件中的原始数据),核心是使用标准库 compress/gzip 和 io 相关包。你不需要手动处理 gzip 格式细节,只需创建一个 *gzip.Reader 包裹底层 reader,然后像读普通文件一样读取即可。
最常见场景是读取本地 .gz 文件。需先用 os.Open 打开文件,再用 gzip.NewReader 包装:
gzip.NewReader 返回一个实现了 io.Reader 的解压 reader,后续可直接用 io.ReadFull、buf
io.Scanner 或 io.Copy 等读取NewReader 阶段若 gzip 文件内是文本(如 access.log.gz),推荐用 bufio.Scanner 流式读取,内存友好:
gzip.NewReader(f) 获取解压 readerbufio.NewScanner,无需额外缓冲层scanner.Buffer(make([]byte, 64*1024), 1
对体积较小的 gzip 文件(如配置、JSON 压缩包),可用 io.ReadAll 简洁获取原始字节:
io.ReadAll
[]byte,可转为 string 或 JSON 解析gzip 不限于文件,任何实现了 io.Reader 的源(如 http.Response.Body)都可解压:
Content-Encoding: gzip,通常已由 http.Client 自动解压;如需手动控制,可禁用自动解压(设置 Transport.DisableCompression = true),再用 gzip.NewReader(resp.Body)