index
A _line filter_ is a common type of program that reads input on stdin, processes it, and then prints some derived result to stdout. `grep` and `sed` are common line filters.
Here's an example line filter in Go that writes a capitalized version of all input text. You can use this pattern to write your own Go line filters.
package main
import (
	"bufio"
	"fmt"
	"os"
	"strings"
)
func main() {
Wrapping the unbuffered `os.Stdin` with a buffered scanner gives us a convenient `Scan` method that advances the scanner to the next token; which is the next line in the default scanner.
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
`Text` returns the current token, here the next line, from the input.
		ucl := strings.ToUpper(scanner.Text())
Write out the uppercased line.
		fmt.Println(ucl)
	}
Check for errors during `Scan`. End of file is expected and not reported by `Scan` as an error.
	if err := scanner.Err(); err != nil {
		fmt.Fprintln(os.Stderr, "error:", err)
		os.Exit(1)
	}
}
index