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

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

Barbara Streisand
发布: 2024-10-31 08:45:29
原创
601 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板