gpt4 book ai didi

go - Go 中将 io.ReadCloser 流式传输到文件的最有效方法?

转载 作者:IT王子 更新时间:2023-10-29 00:35:40 26 4
gpt4 key购买 nike

给定一个 io.ReadCloser,例如从 HTTP 请求的响应中,在内存开销和代码可读性方面将响应流式传输到文件的最有效方法是什么?

最佳答案

io.Copy在代码方面无疑是最高效的;你只需要

outFile, err := os.Create(filename)
// handle err
defer outFile.Close()
_, err = io.Copy(outFile, res.Body)
// handle err

它在 CPU 和内存方面也可能非常高效。你可以偷看implementation of io.Copy如果你想;假设主体没有实现 WriteTo 并且文件没有实现 ReadFrom(快速浏览一下就知道它们没有),Copy 将一次复制最多 32kB 的 block 。更大的 block 可能会使用更少的 CPU 但更多的内存;他们选择的值(value)似乎是一个很好的权衡。

关于go - Go 中将 io.ReadCloser 流式传输到文件的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31954899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com