Автор оригинала: Hau Ma Van.
Как вы загружаете файл в несколько пунктов назначения одновременно?
Я познакомимся с вами, ребята, Goalang IO трубопровод и IO Copier, чтобы сделать это
добыча Трубка
Иди труба изготовила «трубу», которая писала в писатель, выйдет на читатель
reader, writer := io.Pipe()
Вещатель
Связанный канал Broadcaster можно найти в https://github.com/hauxe/gom/tree/master/broadcast.
broadcaster := broadcast.NewBroadcaster()
Мы будем широким литьем в файл и stdout, поэтому создайте два слушателя для вещателей
fileComsumer, err := broadcaster.Listen() if err != nil { panic(err) } stdoutComsumer, err := broadcaster.Listen() if err != nil { panic(err) }
добыча Teereader.
В функции записи мы используем Teereader для записи в пункт назначения и принять копию читателя для трансляции на следующий слушатель
Обратите внимание, что вы должны выполнить окончательный прочитанный на Final Teereader, чтобы вызвать трубопровод IO
Полные рабочие коды:
Оригинал: «https://www.codementor.io/@hau12a1/golang-io-pipeline-and-broadcast-ltxsaopw3»