Maison > développement back-end > Golang > le corps du texte

En quoi io.TeeReader et io.Copy diffèrent-ils dans Go ?

Patricia Arquette
Libérer: 2024-10-25 07:42:02
original
779 Les gens l'ont consulté

How do io.TeeReader and io.Copy differ in Go?

Différences entre io.TeeReader et io.Copy

Dans Go, io.TeeReader et io.Copy facilitent le transfert de données depuis un io. Lecteur vers un io.Writer. Bien que les deux fonctions répondent à cet objectif, elles offrent des fonctionnalités distinctes.

io.Copy

io.Copy est une fonction simple et directe qui copie efficacement les données d'un lecteur source. à un écrivain de destination. Il se concentre uniquement sur le transfert de données et ne renvoie aucune valeur.

io.TeeReader

io.TeeReader offre une approche plus polyvalente. Contrairement à io.Copy, io.TeeReader crée un nouveau io.Reader qui enveloppe le lecteur d'origine. Lors de la lecture à partir de ce nouveau lecteur, les données sont simultanément écrites sur le io.Writer fourni. Cette fonctionnalité est utile lorsque vous devez à la fois inspecter et traiter les données copiées.

Exemple d'utilisation

Pour illustrer la différence, considérons un scénario dans lequel nous devons copier des données de un lecteur vers la sortie standard tout en calculant également le hachage MD5 du contenu copié.

Utilisation de io.TeeReader :

<code class="go">r := io.TeeReader(strings.NewReader(s), os.Stdout)
h := md5.New()
if _, err := io.Copy(h, r); err != nil { panic(err) }
fmt.Printf("Hash: %x\n", h.Sum(nil))</code>
Copier après la connexion

Dans cet exemple, io.TeeReader nous permet d'imprimer simultanément le données vers la sortie standard et calculez le hachage MD5 à l'aide de la fonction h.Sum(nil).

io.MultiWriter

Il convient de noter que la fonctionnalité de io.TeeReader peut également être réalisé en utilisant io.MultiWriter :

<code class="go">mw := io.MultiWriter(h, os.Stdout)
if _, err := io.Copy(mw, strings.NewReader(s)); err != nil { panic(err) }
fmt.Printf("Hash: %x\n", h.Sum(nil))</code>
Copier après la connexion

io.MultiWriter combine plusieurs rédacteurs en une seule destination, permettant ainsi d'écrire des données simultanément à plusieurs emplacements. Dans ce cas, h reçoit les données copiées pour le calcul du hachage, tandis que os.Stdout les affiche.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!