Линейный фильтр это распространенный вид программ,
читающих стандартный вход (stdin), обрабатывающих его и
выводящих результат в стандартный вывод (stdout).
К примеру, grep и sed это линейные фильтры.
|
|
Данная программа является примером линейного фильтра,
который выводит весь входящий текст большими буквами.
Вы можете использовать этот паттерн для своих линейных
фильтров на Go.
|
|
|
import (
"bufio"
"fmt"
"os"
"strings"
)
|
|
|
Создав обёртку небуферизированного os.Stdin в виде
буферизированного сканера, мы можем использовать удобный
метод Scan , который продвигает сканер к следующему токену.
В сканере по-умолчанию, это будет следующая строка.
|
scanner := bufio.NewScanner(os.Stdin)
|
Метод Text возвращает текущий токен, тоесть следующую
входящую строку.
|
|
|
ucl := strings.ToUpper(scanner.Text())
|
Напечатать результат в стандартный вывод (stdout)
|
|
Проверяем ошибки, которые могли вернуться после работы Scan .
Конец файла (EOF) и так ожидается, поэтому не считается ошибкой.
|
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "error:", err)
os.Exit(1)
}
}
|