Maison  >  Article  >  développement back-end  >  Comment déterminer si l’entrée est redirigée vers Go ?

Comment déterminer si l’entrée est redirigée vers Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-05 04:52:02630parcourir

How to Determine if Input is Piped in Go?

Détermination de l'entrée redirigée dans Go

Comprendre si une commande est redirigée est crucial dans les applications Go, en particulier lors du traitement de données provenant de diverses sources. Cet article explique comment déterminer si une commande est redirigée ou non, permettant aux développeurs d'adapter leur code en conséquence.

Solution

Go fournit le os.Stdin.Stat( ) fonction pour récupérer les informations de fichier associées à l'entrée standard. Ces informations incluent le mode fichier, qui indique si l'entrée provient d'un terminal ou d'un tube. L'extrait de code suivant montre comment utiliser os.Stdin.Stat() à cette fin :

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

Lorsque la commande est redirigée, fi.Mode() et os.ModeCharDevice sont évalués à 0, indiquant que le l'entrée ne provient pas d'un périphérique de caractères (tel qu'un terminal). À l’inverse, une valeur non nulle signifie que l’entrée provient d’un périphérique de caractères.

Cette approche fournit un moyen fiable de distinguer les entrées redirigées et non redirigées, permettant aux développeurs d’adapter le comportement de leurs applications en conséquence.

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