«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Есть ли способ проверить, есть ли данные на стандартном вводе (os.Stdin) в Go без блокировки?

Есть ли способ проверить, есть ли данные на стандартном вводе (os.Stdin) в Go без блокировки?

Опубликовано 15 ноября 2024 г.
Просматривать:254

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

Как определить доступность данных в стандартном вводе с помощью Go

Вопрос

Существует ли в Go надежный способ проверить, является ли входной поток (os .Stdin) содержит данные?

Обычный подход чтения из блоков потока, когда данные недоступны, что делает его непрактичным для определенного использования. случаев.

Ответ

Как и другие файлы, os.Stdin можно проверить, чтобы определить его размер, предлагая удобный метод определения доступности данных.

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

Используя этот метод, вы можете различать пустые и непустые входные данные стандартного ввода, обеспечивая более гибкую обработку доступности данных.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3