TGViewer
Golang Backend | YeaHub Golang Backend | YeaHub @yeahub_go_backend · 861 subscribers
Post #711 107
Пакет io: работа с потоками данных

Пакет io предоставляет базовые интерфейсы для работы с потоками ввода-вывода.

Reader и Writer

io.Reader читает данные в байтовый срез. io.Writer записывает байты.


type Reader interface {
Read(p []byte) (n int, err error)
}

type Writer interface {
Write(p []byte) (n int, err error)
}


Эти интерфейсы реализуют файлы, сетевые соединения, буферы.

io.Copy

Копирует данные из Reader в Writer без ручного буферизованного цикла.


written, err := io.Copy(dst, src)


Функция сама подбирает оптимальный размер буфера.

io.ReadAll

Читает все данные из Reader до конца.


data, err := io.ReadAll(reader)


Удобно для небольших объемов. Для больших файлов используйте стриминг.

Композиция интерфейсов

io.ReadWriter объединяет Reader и Writer. io.ReadCloser добавляет Close.


type ReadCloser interface {
Reader
Closer
}


TeeReader и MultiWriter

io.TeeReader дублирует чтение в Writer. io.MultiWriter пишет в несколько Writer одновременно.


tee := io.TeeReader(src, logFile)
multi := io.MultiWriter(file1, file2)


Практические советы

Всегда проверяйте количество прочитанных или записанных байт. n может быть меньше len(p) даже без ошибки.

Используйте io.LimitReader для ограничения размера читаемых данных.

Пакет io универсален. Один и тот же код работает с файлами, сетью и буферами.
More from @yeahub_go_backend
  1. Oct 6, 2026Grafana для разработчика: базовые сценарии Grafana визуализирует метрики и помогает находи…
  2. Oct 5, 2026#Собес #Go_interfaces #structural_typing #duck_typing 🤔 Почему в Go интерфейсы реализован…
  3. Oct 2, 2026#podcast #все 📚 Kolesa Podcast Podcast by IT-компания Kolesa Group. В целом он обо всём и…
  4. Oct 1, 2026#Собес #index #write #performance 🤔 Почему индексы могут замедлять INSERT и UPDATE операц…
  5. Sep 30, 2026#Собес #golang #postgres #kafka 🤔 Техническое собеседование - Middle Golang Backend Devel…
  6. Sep 28, 2026#Собес #goroutine #panic #recover 🤔 Может ли recover в одной горутине перехватить панику,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →