"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 > Existe uma maneira de verificar se a entrada padrão (os.Stdin) no Go possui dados sem bloqueio?

Existe uma maneira de verificar se a entrada padrão (os.Stdin) no Go possui dados sem bloqueio?

Publicado em 15/11/2024
Navegar:911

Is there a way to check if standard input (os.Stdin) in Go has data without blocking?

Como determinar a disponibilidade de dados em Stdin com Go

Pergunta

No Go, existe uma maneira confiável de verificar se o fluxo de entrada (os .Stdin) contém dados?

A abordagem convencional de leitura do fluxo bloqueia quando nenhum dado está disponível, tornando-a impraticável para certos casos de uso.

Resposta

Semelhante a outros arquivos, os.Stdin pode ser inspecionado para determinar seu tamanho, oferecendo um método conveniente para detecção de disponibilidade de dados.

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

Ao utilizar esta técnica, você pode distinguir entre entradas stdin vazias e não vazias, permitindo um tratamento mais flexível da disponibilidade de dados.

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