如何使用 Go 找出 Stdin 是否有数据
在 Go 中处理输入流时,您可能会遇到需要以下情况:确定 os.Stdin 是否有任何可用数据。这在各种场景中都很有用,例如决定是否继续读取输入或向用户显示提示。
解决方案:
os.Stdin 可以是处理方式类似于 Go 中的任何其他文件描述符。要检查它是否有数据,您可以检查其大小:
<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>
用法:
您可以将此代码编译为可执行文件并像管道一样使用它:
$ ./pipe Stdin is empty $ echo test | ./pipe 5 bytes available in Stdin
这个示例演示了当没有数据通过管道传输到 stdin 时,程序会报告一个空的 stdin,而当数据通过管道传入时,它会正确指示可用字节。
以上是Go 中如何检查 Stdin 是否有数据?的详细内容。更多信息请关注PHP中文网其他相关文章!