Heim > Backend-Entwicklung > Golang > Wie liest man in Golang beliebige Bytes in einen Puffer: Effizienter Umgang mit variablen Datenströmen?

Wie liest man in Golang beliebige Bytes in einen Puffer: Effizienter Umgang mit variablen Datenströmen?

Mary-Kate Olsen
Freigeben: 2024-10-27 08:09:31
Original
526 Leute haben es durchsucht

How to Read Arbitrary Bytes into a Buffer in Golang: Efficiently Handling Variable Data Streams?

Beliebige Bytes in den Puffer in Golang lesen

Das Lesen von Daten aus einem Stream in einen Puffer kann manchmal das Lesen einer beliebigen Anzahl von Bytes erfordern. Stellen Sie sich beispielsweise ein Szenario vor, in dem Sie Daten aus einer Verbindung lesen und diese an einen Handler übergeben müssen.

Ein gängiger Ansatz besteht darin, einen Puffer mit fester Größe zu erstellen und die Read()-Methode zu verwenden:

<code class="go">buf := make([]byte, 256)
for {
    n, err := conn.Read(buf)
    fmt.Println(string(buf))
    if err != nil || n == 0 {
        return
    }
    Handle(buf[:n])
}</code>
Nach dem Login kopieren

Obwohl diese Lösung in vielen Fällen funktioniert, kann es zu Problemen kommen, wenn der Stream nicht über genügend Bytes verfügt, um den Puffer zu füllen. Um dieses Problem zu beheben, können Sie die folgende Lösung verwenden:

<code class="go">var b bytes.Buffer
if _, err := io.Copy(&b, conn); err != nil {
    return err
}

Handle(b.Bytes())</code>
Nach dem Login kopieren

Dieser Ansatz nutzt die Funktion io.Copy(), die den gesamten Stream in einen Bytepuffer liest. Anschließend können Sie die Bytes abrufen und an Ihren Handler übergeben. Dadurch wird sichergestellt, dass Sie den gesamten Stream lesen, unabhängig von der Anzahl der zu einem bestimmten Zeitpunkt verfügbaren Bytes.

Das obige ist der detaillierte Inhalt vonWie liest man in Golang beliebige Bytes in einen Puffer: Effizienter Umgang mit variablen Datenströmen?. 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