我需要在接收到字节时将它们增量地附加到缓冲区,稍后我可以再次读取它们。像这样的东西:
type TwoPassReader struct {
someDataSource SomeDataReader
secondPassReader io.Reader
}
func (r *TwoPassReader) Read(b []byte) (n int, err error) {
n, err := r.someDataSource.Read(b)
if err == nil {
//XXX: this doesn't actually exist, right?
bytesAppended, writeErr := r.secondPassReader.Write(b)
}
return n, err
}
func (r *) ReadSecondPass(b []byte) (n int, err error) {
return r.secondPassReader.Read(b)
}
虽然对此的简单答案是使用bufio.Reader.Peek,但我有一个SomeDataReader无法修改的对象而不是 Reader。将数据放入 a[]byte并在ReadSecondPass调用时返回的最佳解决方案是什么?
跃然一笑
相关分类