io.Copy(dst, src)?Копирует данные из io.Reader в io.Writer до io.EOF или ошибки. Возвращает количество скопированных байт и ошибку.
src, _ := os.Open("in.txt")
dst, _ := os.Create("out.txt")
n, err := io.Copy(dst, src)
Работает с любыми потоками: файлы, сокеты, буферы. Внутри использует буфер, поэтому не нужно читать/писать вручную по кускам.