Heim > Backend-Entwicklung > Golang > Warum kann „bytes.Buffer' „io.Writer' in Go nicht implementieren und wie kann das Problem behoben werden?

Warum kann „bytes.Buffer' „io.Writer' in Go nicht implementieren und wie kann das Problem behoben werden?

Barbara Streisand
Freigeben: 2024-12-09 13:57:12
Original
1000 Leute haben es durchsucht

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

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage