Implementieren von io.Writer für Objekte zum Schreiben von Zeichenfolgen
In Go müssen wir häufig Objekte erstellen, die die io.Writer-Schnittstelle implementieren Erledigung von Schreibvorgängen. Beim Versuch, bytes.Buffer zu verwenden, kann es jedoch trotz der Implementierung der Write-Methode zu Verwirrung kommen.
Fehlererklärung
Die Fehlermeldung „bytes.Buffer tut „io.Writer nicht implementieren“ tritt auf, weil bytes.Buffer einen Zeigerempfänger für seine Write-Methode hat:
func (b *Buffer) Write(p []byte) (n int, err error)
Das bedeutet dass die Methode für einen Zeiger auf den Puffer aufgerufen werden muss, nicht für den Puffer selbst. Der Versuch, den Puffer direkt zu übergeben, wie im Codeausschnitt unten gezeigt, verursacht den Fehler.
var b bytes.Buffer foo := bufio.NewWriter(b)
Lösung: Übergabe eines Zeigers an den Puffer
Zur Lösung Um diesen Fehler zu beheben, müssen wir einen Zeiger auf den Puffer statt auf den Puffer selbst übergeben. Dies liegt daran, dass bufio.NewWriter eine io.Writer-Schnittstelle erwartet und der Zeiger auf den Puffer diese Schnittstelle korrekt implementiert.
var b bytes.Buffer foo := bufio.NewWriter(&b) // Pass a pointer to the buffer
Mit dieser Änderung erstellt das Programm erfolgreich einen Writer, der in den String-Puffer schreibt .
Das obige ist der detaillierte Inhalt vonWarum kann „bytes.Buffer' „io.Writer' in Go nicht implementieren und wie kann das Problem behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!