io.Reader - интерфейс с методом Read(p []byte) (n int, err error). io.Writer - Write(p []byte) (n int, err error). Базовые интерфейсы для ввода-вывода: файлы, сеть, буферы реализуют их. Композиция через io.Reader/Writer позволяет универсально обрабатывать потоки.