Use io.MultiReader to chain readers sequentially and io.TeeReader to duplicate a stream to a secondary writer.
Use io.MultiReader to read from multiple sources sequentially and io.TeeReader to copy data to a secondary destination while reading.
import "io"
// Read from r1, then r2, then r3 sequentially
combined := io.MultiReader(r1, r2, r3)
// Read from r and simultaneously copy every byte to w
reader := io.TeeReader(r, w)
Think of io.MultiReader as a playlist that plays one song after another until they are all done. io.TeeReader is like a splitter that sends the same data stream to two places at once: one for you to use and one for logging or saving. You use them when you need to chain data sources or duplicate a stream without reading it twice.