从Go中的stdin扫描空间

时间:2014-09-27 06:04:32

标签: go

我尝试使用标准" fmt"从stdin扫描一些命令。封装

然而,似乎scanf在第一个空格后停止。知道如何解决它吗?

   var in string
   for err != nil {
        _, err = fmt.Scanf("%s", &in)
    }
   fmt.Println(in)

1 个答案:

答案 0 :(得分:4)

我发现我需要的是bufio.Scan

scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        return scanner.Text()
    }
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "reading standard input:", err)
    }