Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在golang中将http响应正文读取到缓冲区(不使用ioutil.ReadAll())_Http_Go - Fatal编程技术网

如何在golang中将http响应正文读取到缓冲区(不使用ioutil.ReadAll())

如何在golang中将http响应正文读取到缓冲区(不使用ioutil.ReadAll()),http,go,Http,Go,如果文件太大,ioutil.ReadAll()可能会导致内存峰值。您可以使用它获取io.Writer和io.Reader io.Copy使用32KB缓冲区从读卡器复制到写卡器,直到达到EOF。即使源代码要大得多,它也使用32KB的缓冲区 io.Copy(编写器、读取器) 我猜您的问题与第二条评论重复。您是在问如何限制读取响应正文时使用的内存量吗?内存峰值是因为您读取了所有内容。如果你不想全部读,那就分块读。如果这是一个JSON,请使用JSON.Decoder。如果要将响应正文完全读取到内存缓冲区

如果文件太大,ioutil.ReadAll()可能会导致内存峰值。

您可以使用它获取
io.Writer
io.Reader

io.Copy
使用32KB缓冲区从读卡器复制到写卡器,直到达到EOF。即使源代码要大得多,它也使用32KB的缓冲区

io.Copy(编写器、读取器)

我猜您的问题与第二条评论重复。您是在问如何限制读取响应正文时使用的内存量吗?内存峰值是因为您读取了所有内容。如果你不想全部读,那就分块读。如果这是一个JSON,请使用JSON.Decoder。如果要将响应正文完全读取到内存缓冲区中,则必须支付内存价格。使用
ioutil.ReadAll
或其他方法并不重要。如果你不想把整个文件读入内存缓冲区,你应该考虑使用多部件编码之类的东西,如果你想完整地读取它,你必须完整地读取它,如果IouTur.Read在这个过程中使用过多的内存,那么你自己的“更好”的解决方案也会占用太多内存。重新设计。