No Go, interagir com entrada padrão (stdin) costuma ser uma tarefa crucial ao trabalhar com comandos e pipelines. No entanto, determinar se stdin possui dados sem bloquear a execução do programa pode ser um desafio.
O objeto de arquivo os.Stdin representa stdin e possui recursos semelhantes a outros objetos de arquivo em Go. Isso nos permite aproveitar a função Stat para coletar informações sobre stdin, incluindo seu tamanho.
Para verificar se stdin contém dados, podemos verificar seu tamanho usando o seguinte código:
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")
}
}
Quando este código é compilado em um executável, ele pode ser usado como um filtro para processar a entrada canalizada para stdin. Por exemplo, executando o comando echo test | ./executable imprimiria "5 bytes disponíveis em Stdin" no console, indicando que stdin contém dados. Por outro lado, executar ./executable sem qualquer entrada exibiria "Stdin está vazio."
Essa abordagem permite que os desenvolvedores verifiquem dados em stdin sem bloquear e prossigam com a lógica do programa de acordo. É particularmente útil ao trabalhar com pipelines ou manipular a entrada do usuário em stdin.
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