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

GolangGolangBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FileOperationsGroup(["File Operations"]) go/FileOperationsGroup -.-> go/line_filters("Line Filters") subgraph Lab Skills go/line_filters -.-> lab-15486{{"Краткая программа на Go для преобразования текста"}} end

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

Задача, которую необходимо решить в данной лабораторной работе, - написать программу на 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, которые считывают и модифицируют входной текст.