Maison > développement back-end > Golang > Convertir de `bufio.Reader` en `io.ReadWriteCloser`

Convertir de `bufio.Reader` en `io.ReadWriteCloser`

王林
Libérer: 2024-02-05 22:48:07
avant
944 Les gens l'ont consulté

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

Contenu de la question

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)
Copier après la connexion

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


Réponse correcte


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)
}
Copier après la connexion

Comment l'utiliser est le suivant :

rw := &BufferedReadWriteCloser{bufio.NewReader(i), i}
p, err := rw.Peek(1)
Copier après la connexion
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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal