方法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/