Go 程序的标准输入中读取(接收和存储)输入的方法

20 min read

使用标准包bufio下的NewScanner方法,将标准输入os.Stdin作为参数传入。然后,可以使用scanner.Scan()方法扫描每一行输入,并将其存储至变量中。

示例代码如下:

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin) // 使用 bufio 包的 NewScanner 方法初始化一个 Scanner 实例,将标准输入作为参数传入

    for scanner.Scan() { // 循环读取标准输入中的每一行
        line := scanner.Text() // 使用 Text 方法获取该行内容并存入变量
        fmt.Println(line) // 输出该行内容
    }

    if err := scanner.Err(); err != nil { // 如果出现错误,输出错误信息
        fmt.Fprintln(os.Stderr, "reading standard input:", err)
    }
}

在执行该程序时,可以通过输入内容并按下回车键,将输入的内容传递至程序中,程序将会输出每一行输入:

$ go run main.go
Hello, world!
Hello, world!
Golang is awesome!
Golang is awesome!
^C # 按下 Ctrl+C 结束程序