行过滤器是一种常见的程序类型,它从标准输入读取数据,对其进行处理,然后将一些派生结果输出到标准输出。grep 和 sed 是常见的行过滤器。
|
|
以下是一个 Go 中的示例行过滤器,它将所有输入文本写入大写版本。您可以使用此模式编写自己的 Go 行过滤器。
|
package main
|
|
import (
"bufio"
"fmt"
"os"
"strings"
)
|
|
func main() {
|
将无缓冲的 os.Stdin 包装在一个缓冲的扫描器中,为我们提供了一个方便的 Scan 方法,该方法将扫描器推进到下一个标记;在默认扫描器中,下一个标记是下一行。
|
scanner := bufio.NewScanner(os.Stdin)
|
Text 返回当前标记,这里是从输入读取的下一行。
|
for scanner.Scan() {
|
|
ucl := strings.ToUpper(scanner.Text())
|
写出大写的行。
|
fmt.Println(ucl)
}
|
检查 Scan 期间的错误。文件结尾是预期的,并且 Scan 不会将其报告为错误。
|
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "error:", err)
os.Exit(1)
}
}
|