Maison > développement back-end > Golang > Comment puis-je lire plusieurs fois à partir du même io.Reader en Go ?

Comment puis-je lire plusieurs fois à partir du même io.Reader en Go ?

Patricia Arquette
Libérer: 2024-12-14 12:14:11
original
548 Les gens l'ont consulté

How Can I Read from the Same io.Reader Multiple Times in Go?

Gérer plusieurs lectures à partir du même io.Reader

La lecture à partir d'un flux io.Reader ne peut être effectuée qu'une seule fois, car elle représente un flux de données séquentiel. Cependant, il existe des scénarios dans lesquels vous devrez peut-être lire les mêmes données à partir de plusieurs sources.

Une façon d'y parvenir consiste à utiliser io.TeeReader. Cette fonction crée un nouveau io.Reader qui duplique les données d'entrée, vous permettant de créer plusieurs instances avec des références distinctes au flux d'origine.

Par exemple :

package main

import (
    "bytes"
    "io"
    "io/ioutil"
    "log"
    "strings"
)

func main() {
    r := strings.NewReader("some io.Reader stream to be read\n")
    var buf bytes.Buffer
    tee := io.TeeReader(r, &buf)

    log.Println(ioutil.ReadAll(tee))
    log.Println(ioutil.ReadAll(&buf))
}
Copier après la connexion

Dans cet exemple, ioutil.ReadAll() est d'abord appelé sur tee, qui lit et enregistre les données du flux d'origine. Ensuite, ioutil.ReadAll() est appelé sur &buf, qui imprime la copie des données du TeeReader.

Remarque : Il est important de lire depuis tee avant d'essayer de lire depuis buf. Sinon, le tampon sera vide.

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:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal