"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment vérifier les données dans Stdin sans bloquer dans Go ?

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

Publié le 2024-11-19
Parcourir:117

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 vous travaillez 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 à l'aide du code suivant :

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")
    }
}

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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3