我需要增量追加字節,因爲我將它們接收到緩衝區,以便稍後再讀取它們。事情是這樣的:如何將字節推入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
對象,我不能修改的,而不是一個讀者。將數據放入[]byte
的最佳解決方案是在調用ReadSecondPass
時返回該數據嗎?
This works great。我最終不需要按照我嘗試的方式這樣做,一個頻道最終變得更加合適,因爲我想在一個公用事業中進行第二次傳球。 – simpleproof