Maison >développement back-end >Golang >Pourquoi « bytes.Buffer » n'implémente-t-il pas « io.Writer » dans Go et comment puis-je y remédier ?

Pourquoi « bytes.Buffer » n'implémente-t-il pas « io.Writer » dans Go et comment puis-je y remédier ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-08 07:54:13958parcourir

Why Does `bytes.Buffer` Not Implement `io.Writer` in Go, and How Can I Fix It?

Résolution de l'erreur "bytes.Buffer n'implémente pas io.Writer"

Dans Go, l'implémentation de l'interface io.Writer permet aux objets de fournir une méthode pour écrire des données. De nombreuses fonctions, y compris bufio.NewWriter(), attendent un paramètre de type io.Writer pouvant recevoir un flux d'octets.

Cependant, une erreur peut se produire lors de la tentative d'utilisation d'une variable bytes.Buffer comme io. .Writer :

bytes.Buffer does not implement io.Writer (Write method has pointer receiver)

Cette erreur se produit car la méthode Write de bytes.Buffer a un pointeur récepteur.

Solution :

Pour résoudre cette erreur, passez un pointeur vers le tampon au lieu du tampon lui-même :

import "bufio"
import "bytes"

func main() {
    var b bytes.Buffer
    foo := bufio.NewWriter(&b)
}

En passant un pointeur vers le tampon (en le préfixant de &), vous activez la méthode Write pour modifier le tampon sous-jacent. Cela répond à l'exigence d'un type qui implémente l'interface io.Writer avec un récepteur de pointeur.

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!

Déclaration:
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