Краткая программа на Go для преобразования текста

Beginner

This tutorial is from open-source community. Access the source code

Введение

Лаборатория по фильтрации линий - это распространённый тип программы, которая считывает ввод с stdin, обрабатывает его и затем выводит некоторый полученный результат в stdout. Целью данной лабораторной работы является написание программы на Go, которая считывает входной текст и модифицирует его в соответствии с конкретными требованиями.

Фильтры линий

Задача, которую необходимо решить в данной лабораторной работе, - написать программу на Go, которая считывает входной текст из stdin, переводит все буквы в верхний регистр и затем выводит модифицированный текст в stdout.

  • Программа должна считывать входной текст из stdin.
  • Программа должна переводить все буквы в входном тексте в верхний регистр.
  • Программа должна выводить модифицированный текст в stdout.
## Чтобы протестировать наш фильтр линий, сначала создайте файл с несколькими
## строчными строками.
$ echo 'hello' > /tmp/lines
$ echo 'filter' >> /tmp/lines

## Затем используйте фильтр линий, чтобы получить строки в верхнем регистре.
$ cat /tmp/lines | go run line-filters.go
HELLO
FILTER

Ниже представлен полный код:

// _Фильтр линий_ - это распространённый тип программы, которая считывает
// ввод с stdin, обрабатывает его и затем выводит некоторый
// полученный результат в stdout. `grep` и `sed` - это общие
// фильтры линий.

// Вот пример фильтра линий на Go, который выводит
// версию всех входных текстов с заглавными буквами. Вы можете использовать этот
// шаблон для написания собственных фильтров линий на Go.
package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {

    // Оборачивание небуферизированного `os.Stdin` буферизированным
    // сканером даёт нам удобный метод `Scan`, который
    // перемещает сканер к следующему токену; который является
    // следующей строкой в стандартном сканере.
    scanner := bufio.NewScanner(os.Stdin)

    for scanner.Scan() {
        // `Text` возвращает текущий токен, здесь следующую строку,
        // из ввода.
        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)
    }
}

Резюме

Лабораторная работа по фильтрации линий требует написания программы на Go, которая считывает входной текст из stdin, переводит все буквы в тексте в верхний регистр и затем выводит модифицированный текст в stdout. Эта лабораторная работа - отличный способ практиковать написание программ на Go, которые считывают и модифицируют входной текст.