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

Publié le 2024-11-15
Parcourir:796

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.

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

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.

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