当前位置: 首页 > 面试题库 >

使用Go确定Stdin是否具有数据

柳飞飙
2023-03-14
问题内容

有没有办法检查输入流(os.Stdin)是否有数据

从GO的初始stdin中读取帖子?显示了如何读取数据,但是不幸的是,如果没有数据通过管道传送到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")
    }
}

我将其构建为“管道”可执行文件,其工作方式如下:

$ ./pipe
Stdin is empty
$ echo test | ./pipe
5 bytes available in Stdin


 类似资料:
  • 问题内容: 我正在使用jQuery,以查看是否有一种简单的方法来确定该元素是否具有与之关联的特定CSS类。 我有该元素的ID,以及我要寻找的CSS类。我只需要能够在if语句中根据元素上该类的存在进行比较。 问题答案: 使用方法: 要么 该参数(显然)是一个字符串,代表您要检查的类,并且返回一个布尔值(因此它不像大多数jQuery方法一样支持链接)。 注意: 如果传递包含空格的参数,则它将与集合的元

  • 如何编写Java代码来确定给定的自动机是否具有确定性。我有一个代表自动机的类,它有以下五个变量: Δ表示如下所示,例如,在实际自动机中,程序中的q1,1,q2看起来像。我知道在一个非确定性自动机中,可能有多个可能的状态,但我不知道如何计算。

  • 问题内容: 我正在将C库移植到Go。AC函数(带有varargs)的定义如下: 因此,我创建了包装器C函数: 如果我在Go中定义函数是这样的: Go编译器抱怨: 那么Go支持功能(方法)重载了吗,还是这个错误意味着其他? 问题答案: 不,不是的。 请参阅Go语言常见问题解答,尤其是有关重载的部分。 如果方法调度也不需要进行类型匹配,则可以简化该方法。其他语言的经验告诉我们,使用具有相同名称但签名不

  • 问题内容: 我是Go的新手,来自Node.JS。 在Node中,如果我运行此命令: 由于超出了最大调用堆栈大小,程序将崩溃。 如果我在Go中这样做: 这将运行并打印到标准输出。 我的问题是: 有没有超过我给出的Go示例失败的最大呼叫数量? 这样的代码在Go中是反模式吗? 问题答案: 在Go中,goroutines没有固定的堆栈大小。取而代之的是,它们从很小的大小开始(大约为4KB),并在需要时增大

  • 问题内容: 雇员表具有ID和NAME列。名称可以重复。我想找出是否至少有一个名称类似“ kaushik%”的行。 因此查询应返回true / false或1/0。 是否可以使用单个查询找到它。如果我们尝试类似 在这种情况下,它不会返回true / false。另外,我们正在遍历表中的所有记录。简单SQL中是否存在这样的方式,使得每当获取满足条件的第一条记录时,它都应停止检查其他记录。还是只能在Pl

  • 问题内容: 我今天遇到了与此类似的代码。 似乎暗示数据类型信息可以与NULL值关联。这是否将元数据附加到将其标识为指定数据类型的NULL值? 这篇文章详细介绍了一种在SqlServer中查找数据类型的方法,但是当我尝试以下行时,它以NULL的形式返回: 问题答案: 在SQL Server中,是在默认情况下所有我能想到的场景。您可以使用以下代码确定这一点: 结果: 在将其放入表中或将其与某些上下文元