Когда вам нужно записать одинаковый данных для нескольких целевых пунктов назначения, например, в лог файл и в STDERR, то можно воспользоваться инструментами встроенного пакета io
. В данной инструкции показано, как реализовать мгновенную запись данных в нескольких ресурсах.
Дублирование записи в нескольких ресурсах записи
1. Создайте файл multiwr.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 |
package main import "io" import "bytes" import "os" import "fmt" func main() { buf := bytes.NewBuffer([]byte{}) f, err := os.OpenFile("sample.txt", os.O_CREATE|os.O_RDWR, os.ModePerm) if err != nil { panic(err) } wr := io.MultiWriter(buf, f) _, err = io.WriteString(wr, "Привет, Go классный!") if err != nil { panic(err) } fmt.Println("Содержимое буфера: " + buf.String()) } |
2. Запустите код через go run multiwr.go
;
3. Посмотрите на результат в консоли:
1 |
Содержимое буфера: Привет, Go классный! |
4. Также проверьте содержимое созданного файла sample.txt
:
1 |
Привет, Go классный! |
Как работает MultiWriter из пакета io?
Пакет io
содержит функцию MultiWriter
с переменным количеством ресурсов для записи. Когда вызывается метод WriteString
, тогда данные записываются для всех добавленных в io.MultiWriter(первый, второй, ...)
открытых ресурсов для записи.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»