如何将字节推入 Go 中的阅读器?

我需要在接收到字节时将它们增量地附加到缓冲区,稍后我可以再次读取它们。像这样的东西:


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调用时返回的最佳解决方案是什么?


小唯快跑啊
浏览 230回答 2
2回答

跃然一笑

io.Reader只是一个接口。我们看不到您分配给该结构字段的内容(如果有的话),但bytes.Buffer可能是此处使用的正确类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go