Heim >Backend-Entwicklung >Golang >Warum implementiert „bytes.Buffer' „io.Writer' nicht direkt in Go?

Warum implementiert „bytes.Buffer' „io.Writer' nicht direkt in Go?

Susan Sarandon
Susan SarandonOriginal
2024-12-02 22:10:14250Durchsuche

Why Doesn't `bytes.Buffer` Implement `io.Writer` Directly in Go?

"bytes.Buffer" und die "io.Writer"-Schnittstelle für Go

Frage: Beim Versuch Wenn Sie die Schnittstelle „io.Writer“ mit einem „bytes.Buffer“-Objekt in Go implementieren, wird die Fehlermeldung „bytes.Buffer does not implementiert“ angezeigt io.Writer“ wird gefunden. Wie kann dieser Fehler behoben werden?

Antwort:

Um diesen Fehler zu beheben, sollte anstelle des Puffers selbst ein Zeiger auf den „bytes.Buffer“ übergeben werden. Dies liegt daran, dass die Methode „Write“ der Schnittstelle „io.Writer“ einen Zeigerempfänger hat, während der Typ „bytes.Buffer“ einen Wertempfänger für seine Methode „Write“ hat.

Hier ist ein Beispiel dafür zeigt, wie man dies richtig implementiert:

import "bufio"
import "bytes"

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

Durch die Übergabe eines Zeigers auf den „bytes.Buffer“ kann der Code den „io.Writer“ korrekt implementieren. Schnittstelle, da sie jetzt die Zeigerempfängerform der „Write“-Methode verwendet.

Das obige ist der detaillierte Inhalt vonWarum implementiert „bytes.Buffer' „io.Writer' nicht direkt in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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