方法http.ReadRequest接受bufio.Reader而不是io.Reader。这背后的原因是什么?

最佳答案

无论如何,它将使用缓冲的读取器。但是由于io.Reader的性质,它不会自动将bufio.Reader包装到缓冲区中-它可以从算法实际需要的底层io.Reader中获取更多数据。并且,由于底层io.Reader无法回退超出的数据,因此它将保留在该缓冲区中。如果使用自动包装,则在读取请求后,缓冲区将丢失,并且io.Reader损坏。因此,它要求您显式包装阅读器以防止数据丢失。

关于go - 为什么ReadRequest使用bufio.Reader?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21739332/

10-16 20:54