В предыдущей инструкции по чтению данных из stdin было показано, что у каждого процесса есть файловые дескрипторы stdin
, stdout
и stderr
. Стандартный подход использует stdout
как процесс вывода и stderr
как процесс вывода ошибки. Так как они являются файловыми дескрипторами, назначением записи данных может быть что угодно, от консоли до сокета. В данной инструкции будет показано, как записать stdout
и stderr
.
Как записывать данные в os.Stdout и os.Stderr
1. Создайте файл stdouterr.go
со следующим содержимым:
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package main import ( "fmt" "io" "os" ) func main() { // Простая запись строки io.WriteString(os.Stdout, "Это строка для стандартного вывода.\n") io.WriteString(os.Stderr, "Это строка для стандартного вывода ошибки.\n") // Stdout/err имплементации // интерфейс записи buf := []byte{0xAF, 0xFF, 0xFE} for i := 0; i < 200; i++ { if _, e := os.Stdout.Write(buf); e != nil { panic(e) } } // Пакет fmt также можно использовать fmt.Fprintln(os.Stdout, "\n") } |
2. Запустите код через go run stdouterr.go
;
3. Посмотрите на результат:
1 2 3 |
Это строка для стандартного вывода. Это строка для стандартного вывода ошибки. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ |
Как и Stdin
, Stdout
и Stderr
являются файловыми дескрипторами. Они имплементируют интерфейс Writer
. В предыдущем примере показаны несколько способов записи через функцию io.WriteString
с использованием API Writer
, а также через пакет fmt
и функции FprintXX
.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»