У каждого процесса есть свой стандартный ввод, вывод и дескриптор файла ошибок. stdin выступает в роли процесса ввода данных. Данная инструкция описывает, как читать данные из stdin.

Как читать ввод с клавиатуры в командной строке в Golang?

1. Создайте файл fmt.go со следующим содержимым:

Премиум 👑 канал по Golang

Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎

Подписаться на канал

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК ЧАТ в Telegram

2. Выполните код через go run fmt.go;
3. Введите имя Джон и нажмите Enter;
4. Введите возраст 40 и нажмите Enter;
5. Посмотрите на финальный результат:

6. Создайте файл scanner.go со следующим содержимым:

7. Выполните код через go run scanner.go;
8. Введите слово Привет и нажмите Enter;
9. Нажмите CTRL + C для отправки SIGINT;
10. Посмотрите на результат:

11. Создайте файл reader.go со следующим содержимым:

12. Выполните код через конвейерный ввод echo 'Go is awesome!' | go run reader.go;
13. Посмотрите на вывод:

stdin в Go можно получить через Stdin из пакета os. По факту, это тип File, что имплементирует интерфейс Reader. Чтение из Reader очень простое. Предыдущий код показывает три самых частых случая того, как читать из Stdin.

Первая опция показывает, как использовать пакет fmt, что предоставляет функции Scan, Scanf и Scanln. Функция Scanf читает ввод и сохраняет его в переменную (или переменные). Преимущество Scanf в том, что вы можете определить формат сканируемого значения. Функция Scan только читает ввод и сохраняет его в переменную (без предварительного форматирования), а Scanln, как можно понять по названию, читает ввод, что заканчивается обрыванием строки \n.

Scanner, из второго примера, предоставляет удобный способ для сканирования более крупного ввода. Scanner содержит функцию Split, через которую можно определить настраиваемую функцию разделения строки. К примеру, для сканирования слов из stdin вы можете использовать bufio.ScanWords и предварительно определенный SplitFunc.

Чтение через API Reader является последним представленным подходом. Он предоставляет вам больше контроля над тем, как читать ввод и как его сохранять.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *