Heim > Backend-Entwicklung > Golang > Warum implementiert „bytes.Buffer' „io.Writer' in Go nicht und wie kann ich das Problem beheben?

Warum implementiert „bytes.Buffer' „io.Writer' in Go nicht und wie kann ich das Problem beheben?

Mary-Kate Olsen
Freigeben: 2024-12-08 07:54:13
Original
947 Leute haben es durchsucht

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

Lösung für den Fehler „bytes.Buffer implementiert io.Writer nicht“

In Go ermöglicht die Implementierung der io.Writer-Schnittstelle Objekten dies Bereitstellung einer Methode zum Schreiben von Daten. Viele Funktionen, einschließlich bufio.NewWriter(), erwarten einen Parameter vom Typ io.Writer, der einen Bytestrom empfangen kann.

Allerdings kann ein Fehler auftreten, wenn versucht wird, eine bytes.Buffer-Variable als io zu verwenden .Writer:

bytes.Buffer does not implement io.Writer (Write method has pointer receiver)
Nach dem Login kopieren

Dieser Fehler tritt auf, weil die Write-Methode von bytes.Buffer einen Zeiger hat Empfänger.

Lösung:

Um diesen Fehler zu beheben, übergeben Sie einen Zeiger auf den Puffer anstelle des Puffers selbst:

import "bufio"
import "bytes"

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

Durch Übergabe Wenn Sie einen Zeiger auf den Puffer angeben (mit dem Präfix &), aktivieren Sie die Write-Methode, um den zugrunde liegenden Puffer zu ändern. Dies erfüllt die Anforderung an einen Typ, der die io.Writer-Schnittstelle mit einem Zeigerempfänger implementiert.

Das obige ist der detaillierte Inhalt vonWarum implementiert „bytes.Buffer' „io.Writer' in Go nicht und wie kann ich das Problem beheben?. 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