Maison  >  Article  >  développement back-end  >  Existe-t-il un moyen de vérifier si l'entrée standard (os.Stdin) dans Go contient des données sans blocage ?

Existe-t-il un moyen de vérifier si l'entrée standard (os.Stdin) dans Go contient des données sans blocage ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 08:45:29492parcourir

Is there a way to check if standard input (os.Stdin) in Go has data without blocking?

Comment déterminer la disponibilité des données dans Stdin avec Go

Question

Dans Go, existe-t-il un moyen fiable de vérifier si le flux d'entrée (OS .Stdin) contient des données ?

L'approche conventionnelle consistant à lire à partir du flux se bloque lorsqu'aucune donnée n'est disponible, ce qui la rend peu pratique pour certaines utilisations cas.

Réponse

Semblable à d'autres fichiers, os.Stdin peut être inspecté pour déterminer sa taille, offrant une méthode pratique pour la détection de la disponibilité des données.

<code class="go">package main

import (
    "fmt"
    "os"
)

func main() {
    file := os.Stdin
    fi, err := file.Stat()
    if err != nil {
        fmt.Println("file.Stat()", err)
    }
    size := fi.Size()
    if size > 0 {
        fmt.Printf("%v bytes available in Stdin\n", size)
    } else {
        fmt.Println("Stdin is empty")
    }
}</code>

Par en utilisant cette technique, vous pouvez faire la distinction entre les entrées stdin vides et non vides, permettant une gestion plus flexible de la disponibilité des données.

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