Funciones auxiliares de io
Copy, TeeReader y MultiWriter
Funciones auxiliares de io es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
La caja de herramientas de io
El paquete io incluye utilidades pequeñas y potentes que combinan lectores y escritores: Copy, TeeReader, MultiWriter y otras.
io.Copy
io.Copy(dst, src) transmite todos los bytes de un lector a un escritor y devuelve la cantidad.
package main
import (
"fmt"
"io"
"os"
"strings"
)
func main() {
n, _ := io.Copy(os.Stdout, strings.NewReader("copied\n"))
fmt.Println("bytes:", n)
}io.CopyN
io.CopyN(dst, src, n) copia exactamente n bytes, lo que resulta útil para leer un prefijo de longitud conocida.
package main
import (
"io"
"os"
"strings"
)
func main() {
io.CopyN(os.Stdout, strings.NewReader("abcdef"), 3)
os.Stdout.WriteString("\n")
}io.MultiWriter
io.MultiWriter replica una escritura en varios escritores a la vez, como el comando tee de Unix.
package main
import (
"bytes"
"fmt"
"io"
"os"
)
func main() {
var buf bytes.Buffer
w := io.MultiWriter(os.Stdout, &buf)
io.WriteString(w, "to both\n")
fmt.Println("buffer copy:", buf.String())
}io.TeeReader
io.TeeReader(r, w) devuelve un lector que copia todo lo que lee en w, perfecto para registrar o calcular el hash de los datos a medida que fluyen.
package main
import (
"bytes"
"fmt"
"io"
"strings"
)
func main() {
var spy bytes.Buffer
tee := io.TeeReader(strings.NewReader("stream"), &spy)
io.ReadAll(tee)
fmt.Println("observed:", spy.String())
}io.MultiReader
io.MultiReader concatena varios lectores en un único flujo continuo.
package main
import (
"fmt"
"io"
"strings"
)
func main() {
r := io.MultiReader(strings.NewReader("Hello, "), strings.NewReader("World"))
data, _ := io.ReadAll(r)
fmt.Println(string(data))
}io.Discard
io.Discard es un escritor que descarta todo, útil para vaciar un lector que no necesita.
package main
import (
"fmt"
"io"
"strings"
)
func main() {
n, _ := io.Copy(io.Discard, strings.NewReader("ignored"))
fmt.Println("discarded:", n, "bytes")
}Calcular hashes con TeeReader
Una combinación clásica: lea un flujo para su propósito real mientras TeeReader envía los mismos bytes a un hash, de modo que calcule una suma de comprobación en una sola pasada.
io.Pipe
io.Pipe conecta un escritor con un lector en memoria, a menudo entre goroutines, para implementar patrones de transmisión productor-consumidor.
Elija la utilidad adecuada
- Mover datos:
Copy/CopyN - Duplicar la salida:
MultiWriter - Observar la entrada:
TeeReader - Unir entradas:
MultiReader - Drenar la entrada:
Discard
Composición
Todas estas utilidades hablan io.Reader/io.Writer, por lo que pueden anidarse y encadenarse libremente para crear canalizaciones sofisticadas a partir de piezas pequeñas.
Comprobación rápida
Compruebe sus conocimientos sobre las utilidades de io.
Resumen
Ha aprendido las utilidades de io.
Copy/CopyNtransmiten datosMultiWriterduplica la salidaTeeReaderobserva la entradaMultiReaderune entradas yDiscardlas drena- Todas se componen mediante las interfaces Reader/Writer
Preguntas frecuentes
¿La lección «Funciones auxiliares de io» es gratis?
Sí — el texto completo de «Funciones auxiliares de io» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Funciones auxiliares de io»?
Copy, TeeReader y MultiWriter Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Funciones auxiliares de io»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- La interfaz Reader
- La interfaz Writer
- Funciones auxiliares de io
- Implementación de lectores personalizados