"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como determinar se a entrada é canalizada no Go?

Como determinar se a entrada é canalizada no Go?

Publicado em 11/12/2024
Navegar:470

How to Determine if Input is Piped in Go?

Determinando a entrada canalizada em Go

Entender se um comando é canalizado é crucial em aplicativos Go, especialmente ao processar dados de várias fontes. Este artigo explora como determinar se um comando é canalizado ou não, permitindo que os desenvolvedores adaptem seu código de acordo.

Solução

Go fornece o os.Stdin.Stat( ) função para recuperar as informações do arquivo associadas à entrada padrão. Essas informações incluem o modo de arquivo, que indica se a entrada é de um terminal ou de um pipe. O trecho de código a seguir demonstra como usar os.Stdin.Stat() para essa finalidade:

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

Quando o comando é canalizado, fi.Mode() & os.ModeCharDevice é avaliado como 0, indicando que a entrada não é de um dispositivo de caractere (como um terminal). Por outro lado, um valor diferente de zero significa que a entrada é de um dispositivo de caractere.

Essa abordagem fornece uma maneira confiável de distinguir entre entradas canalizadas e não canalizadas, permitindo que os desenvolvedores adaptem o comportamento de seus aplicativos de acordo.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3