Maison > développement back-end > Golang > Pourquoi « bytes.Buffer » ne parvient-il pas à implémenter « io.Writer » dans Go et comment cela peut-il être corrigé ?

Pourquoi « bytes.Buffer » ne parvient-il pas à implémenter « io.Writer » dans Go et comment cela peut-il être corrigé ?

Barbara Streisand
Libérer: 2024-12-09 13:57:12
original
1000 Les gens l'ont consulté

Why Does `bytes.Buffer` Fail to Implement `io.Writer` in Go, and How Can It Be Fixed?

Implémentation de io.Writer pour les objets d'écriture de chaînes

Dans Go, nous devons souvent créer des objets qui implémentent l'interface io.Writer pour gérer les opérations d’écriture. Cependant, lorsque l'on tente d'utiliser bytes.Buffer, une confusion peut survenir malgré l'implémentation de la méthode Write.

Explication de l'erreur

Le message d'erreur "bytes.Buffer fait pas implémenter io.Writer" se produit car bytes.Buffer a un récepteur de pointeur pour sa méthode Write :

func (b *Buffer) Write(p []byte) (n int, err error)
Copier après la connexion

Ceci signifie que la méthode doit être appelée sur un pointeur vers le tampon, et non sur le tampon lui-même. Tenter de transmettre directement le tampon, comme indiqué dans l'extrait de code ci-dessous, provoque l'erreur.

var b bytes.Buffer
foo := bufio.NewWriter(b)
Copier après la connexion

Solution : passer un pointeur vers le tampon

Pour résoudre cette erreur, nous devons passer un pointeur vers le tampon au lieu du tampon lui-même. En effet, bufio.NewWriter attend une interface io.Writer et le pointeur vers le tampon implémente correctement cette interface.

var b bytes.Buffer
foo := bufio.NewWriter(&b) // Pass a pointer to the buffer
Copier après la connexion

Avec cette modification, le programme créera avec succès un écrivain qui écrit dans le tampon de chaîne. .

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