Heim > Backend-Entwicklung > Golang > Konvertieren von „bufio.Reader' in „io.ReadWriteCloser'.

Konvertieren von „bufio.Reader' in „io.ReadWriteCloser'.

王林
Freigeben: 2024-02-05 22:48:07
nach vorne
944 Leute haben es durchsucht

从 `bufio.Reader` 转换为 `io.ReadWriteCloser`

Frageninhalt

Ich habe einen io.readwritecloser und möchte einen Blick darauf werfen, ohne die Leser voranzubringen,

Also verwende ich

bi := bufio.NewReader(i)
bi.Peek(1)
Nach dem Login kopieren

So weit so gut, aber wenn ich dann das Original io.readwritecloser (i) 时,它只有 eof (i) wiederverwenden möchte, hat es nur eof.

Meine Frage ist also, wie man von bufio.reader zurück in bufio.reader 转换回 io.readwritecloser


Richtige Antwort


konvertiert. Da bufio.reader die Daten vom zugrunde liegenden Reader puffert, muss die Anwendung dies nach dem Aufruf von peek tun Daten aus bufio.reader lesen.

Um einen io.readwritecloser zu erhalten, der dies tut, verpacken Sie bufio.reader und den ursprünglichen io.readwritecloser:

// bufferedreadwritecloser has all of the methods
// from *bufio.reader and io.readwritecloser.
type bufferedreadwritecloser struct {
    *bufio.reader
    io.readwritecloser
}

func (rw *bufferedreadwritecloser) read(p []byte) (int, error) {
    return rw.reader.read(p)
}
Nach dem Login kopieren

Die Anwendung ist wie folgt:

rw := &BufferedReadWriteCloser{bufio.NewReader(i), i}
p, err := rw.Peek(1)
Nach dem Login kopieren
Der Wert von

rw erfüllt die Schnittstelle io.readwritecloser.

Erfordert oder setzt nicht voraus, dass io.readwritecloser über eine Suchmethode verfügt.

Das obige ist der detaillierte Inhalt vonKonvertieren von „bufio.Reader' in „io.ReadWriteCloser'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage