Maison >développement back-end >Golang >Convertir de `bufio.Reader` en `io.ReadWriteCloser`
J'en ai une io.readwritecloser
et je veux y jeter un coup d'œil sans faire avancer les lecteurs,
Donc j'utilise
bi := bufio.NewReader(i) bi.Peek(1)
Jusqu'ici tout va bien, mais quand je veux réutiliser l'original io.readwritecloser
(i
) 时,它只有 eof
(i
), il n'a que eof
.
Ma question est donc de savoir comment reconvertir bufio.reader
en bufio.reader
转换回 io.readwritecloser
Puisque bufio.reader met en mémoire tampon les données du lecteur sous-jacent, l'application doit le faire après avoir appelé peek Lisez les données de bufio.reader.
Pour obtenir un io.readwritecloser qui fait cela, enveloppez bufio.reader et l'original 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) }
Comment l'utiliser est le suivant :
rw := &BufferedReadWriteCloser{bufio.NewReader(i), i} p, err := rw.Peek(1)La valeur de
rw
satisfait l'interface io.readwritecloser.
N'exige ni ne suppose que io.readwritecloser ait une méthode de recherche.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!