在Golang中从stdin读取输入

在Go语言中,从标准输入(stdin)读取输入通常涉及使用bufio包或fmt包提供的函数。以下是从stdin读取输入的基本方法和示例:

使用 bufio 包读取输入

  1. 导入 bufio 包: 首先,确保导入bufio包和os包,因为我们需要从标准输入中读取数据。

    go
    import ( "bufio" "os" )
  2. 创建 bufio.Scanner 对象: 使用bufio.NewScanner()函数创建一个Scanner对象,该对象可以逐行读取输入。

    go
    scanner := bufio.NewScanner(os.Stdin)
  3. 逐行读取输入: 使用scanner.Scan()方法循环读取输入,每次调用Scan()方法会读取一行输入,然后使用scanner.Text()方法获取文本内容。

    go
    for scanner.Scan() { text := scanner.Text() // 处理每一行的文本内容 fmt.Println("输入的内容是:", text) }
  4. 错误处理: 在使用scanner.Scan()方法后,需要检查是否出现错误。如果出现错误,可以通过scanner.Err()方法获取错误信息。

    go
    if err := scanner.Err(); err != nil { fmt.Println("读取输入时发生错误:", err) }

示例代码总结

下面是一个完整的示例代码,演示如何从stdin读取输入并输出每行的内容:

go
package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) fmt.Println("请输入内容,按 Ctrl+D(在 macOS 或 Linux 下)或 Ctrl+Z(在 Windows 下)结束输入:") for scanner.Scan() { text := scanner.Text() fmt.Println("输入的内容是:", text) } if err := scanner.Err(); err != nil { fmt.Println("读取输入时发生错误:", err) } }

使用 fmt 包读取输入(单行输入)

除了使用 bufio 包,你也可以使用 fmt 包的 Scan 函数来读取单行输入。这种方法适合读取单行输入,例如一次性读取用户的命令行参数或者简短的交互式输入。

go
package main import ( "fmt" ) func main() { var input string fmt.Print("请输入内容: ") _, err := fmt.Scanln(&input) if err != nil { fmt.Println("读取输入时发生错误:", err) return } fmt.Println("输入的内容是:", input) }

关键字提取

Go语言, 从stdin读取输入, bufio包, fmt包, Scanner, Scan, Text, 输入处理, 错误处理