Maison >développement back-end >Golang >Comment vérifier les données dans Stdin sans bloquer dans Go ?

Comment vérifier les données dans Stdin sans bloquer dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 11:16:29665parcourir

How to Check for Data in Stdin without Blocking in Go?

Vérification des données dans Stdin avec Go

Dans Go, interagir avec l'entrée standard (stdin) est souvent une tâche cruciale lorsque l'on travaille avec des commandes et des pipelines. Cependant, déterminer si stdin contient des données sans bloquer l'exécution du programme peut être difficile.

L'objet fichier os.Stdin représente stdin et possède des fonctionnalités similaires à d'autres objets fichier dans Go. Cela nous permet d'exploiter la fonction Stat pour collecter des informations sur stdin, y compris sa taille.

Pour vérifier si stdin contient des données, nous pouvons vérifier sa taille en utilisant le code suivant :

<code class="go">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>

Lorsque ce code est compilé dans un exécutable, il peut être utilisé comme filtre pour traiter les entrées transmises vers stdin. Par exemple, exécuter la commande echo test | ./executable afficherait "5 octets disponibles dans Stdin" sur la console, indiquant que stdin contient des données. À l'inverse, exécuter ./executable sans aucune entrée afficherait « Stdin est vide ».

Cette approche permet aux développeurs de vérifier les données dans stdin sans bloquer et de poursuivre la logique de leur programme en conséquence. Il est particulièrement utile lorsque vous travaillez avec des pipelines ou lorsque vous gérez les entrées utilisateur depuis stdin.

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