在 Go 语言的高并发编程中,处理大规模数据流是家常便饭。然而,许多开发者在面对“如何将一个 io.Writer 的输出对接到一个 io.Reader 的输入”时,往往会下意识地选择 bytes.Buffer。
这种做法在处理小数据时并无大碍,但当数据量达到 GB 级别时,bytes.Buffer 会瞬间吞噬你的内存。这篇文章要聊的是 Go 标准库中一个极具“优雅感”的设计——io.Pipe,它是实现零内存损耗数据流转的终极利器。
假设你有一个需求:将数据库中导出的海量 JSON 数据压缩后上传到对象存储(如 S3)。