Maison > Article > développement back-end > Comment détecter si une commande est transmise en Go ?
Détection de canal dans Go
Dans Go, détecter si une commande est canalisée est crucial pour adapter son comportement de manière appropriée. Une commande redirigée reçoit les entrées d'une autre commande via un tube, tandis qu'une commande non redirigée interagit directement avec le terminal.
Pour déterminer si une commande est redirigée, utilisez la fonction os.Stdin.Stat() pour examiner les informations du fichier de l'entrée standard (Stdin). Si le mode du fichier renvoie une valeur avec le bit os.ModeCharDevice effacé, cela indique que les données proviennent d'un canal. Sinon, cela suggère que les données sont saisies depuis le terminal.
Voici un exemple pour illustrer :
<code class="go">package main import ( "fmt" "os" ) func main() { fi, _ := os.Stdin.Stat() if (fi.Mode() & os.ModeCharDevice) == 0 { fmt.Println("data is from pipe") } else { fmt.Println("data is from terminal") } }</code>
Dans ce script, la fonction os.Stdin.Stat() vérifie les informations de fichier associées à l’entrée standard. Si le mode résultant indique un fichier qui n'est pas un périphérique de caractères (pipe), il affiche "les données proviennent d'un tube". Sinon, il affiche « les données proviennent du terminal ».
En exploitant os.Stdin.Stat() pour détecter l'utilisation des canaux, vous pouvez optimiser vos commandes Go pour gérer efficacement les entrées canalisées et offrir une expérience utilisateur transparente.
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!