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