在Golang中从stdin读取输入
在Go语言中,从标准输入(stdin)读取输入通常涉及使用bufio
包或fmt
包提供的函数。以下是从stdin读取输入的基本方法和示例:
使用 bufio 包读取输入
导入 bufio 包: 首先,确保导入
bufio
包和os
包,因为我们需要从标准输入中读取数据。goimport ( "bufio" "os" )
创建 bufio.Scanner 对象: 使用
bufio.NewScanner()
函数创建一个Scanner
对象,该对象可以逐行读取输入。goscanner := bufio.NewScanner(os.Stdin)
逐行读取输入: 使用
scanner.Scan()
方法循环读取输入,每次调用Scan()
方法会读取一行输入,然后使用scanner.Text()
方法获取文本内容。gofor scanner.Scan() { text := scanner.Text() // 处理每一行的文本内容 fmt.Println("输入的内容是:", text) }
错误处理: 在使用
scanner.Scan()
方法后,需要检查是否出现错误。如果出现错误,可以通过scanner.Err()
方法获取错误信息。goif err := scanner.Err(); err != nil { fmt.Println("读取输入时发生错误:", err) }
示例代码总结
下面是一个完整的示例代码,演示如何从stdin读取输入并输出每行的内容:
gopackage 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
函数来读取单行输入。这种方法适合读取单行输入,例如一次性读取用户的命令行参数或者简短的交互式输入。
gopackage 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, 输入处理, 错误处理