Maison  >  Article  >  développement back-end  >  Comment lire des octets arbitraires dans un tampon dans Golang : gérer efficacement les flux de données variables ?

Comment lire des octets arbitraires dans un tampon dans Golang : gérer efficacement les flux de données variables ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-27 08:09:31432parcourir

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

Lecture d'octets arbitraires dans un tampon en Golang

La lecture de données d'un flux dans un tampon peut parfois nécessiter la lecture d'un nombre arbitraire d'octets. Par exemple, considérons un scénario dans lequel vous lisez des données à partir d'une connexion et devez les transmettre à un gestionnaire.

Une approche courante consiste à créer un tampon de taille fixe et à utiliser la méthode Read() :

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

Bien que cette solution fonctionne dans de nombreux cas, elle peut rencontrer des problèmes si le flux ne dispose pas de suffisamment d'octets pour remplir le tampon. Pour résoudre ce problème, vous pouvez utiliser la solution suivante :

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

Handle(b.Bytes())</code>

Cette approche utilise la fonction io.Copy(), qui lit l'intégralité du flux dans un tampon d'octets. Vous pouvez ensuite récupérer les octets et les transmettre à votre gestionnaire. Cela garantit que vous lisez l'intégralité du flux, quel que soit le nombre d'octets disponibles à un moment donné.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn