io.Reader被视为流。因此,您无法阅读两次。想象一下传入的TCP连接。您无法倒带进来的内容。
但是您可以使用
io.TeeReader复制流:
package mainimport ( "bytes" "io" "io/ioutil" "log" "strings")func main() { r := strings.NewReader("some io.Reader stream to be readn") var buf bytes.Buffer tee := io.TeeReader(r, &buf) log.Println(ioutil.ReadAll(tee)) log.Println(ioutil.ReadAll(&buf)) }
Go
Playground上的示例
编辑: 正如@mrclx指出的:您需要从第
TeeReader一个读取,否则缓冲区将为空。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)