首页 >后端开发 >Golang >有没有办法在不阻塞的情况下检查Go中的标准输入(os.Stdin)是否有数据?

有没有办法在不阻塞的情况下检查Go中的标准输入(os.Stdin)是否有数据?

Barbara Streisand
Barbara Streisand原创
2024-10-31 08:45:29613浏览

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

如何使用 Go 确定 Stdin 中的数据可用性

问题

在 Go 中,是否有可靠的方法来检查输入流(os .Stdin) 包含数据?

当没有可用数据时从流块中读取数据的传统方法,对于某些用例来说是不切实际的。

答案

类似于其他文件,可以检查 os.Stdin 以确定其大小,为数据可用性检测提供一种便捷的方法。

<code class="go">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")
    }
}</code>

通过利用此技术,您可以区分空和非空 stdin 输入,从而允许更灵活地处理数据可用性。

以上是有没有办法在不阻塞的情况下检查Go中的标准输入(os.Stdin)是否有数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn