0Pricing
Go Academy · Lección

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 / CopyN transmiten datos
  • MultiWriter duplica la salida
  • TeeReader observa la entrada
  • MultiReader une entradas y Discard las 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

  1. La interfaz Reader
  2. La interfaz Writer
  3. Funciones auxiliares de io
  4. Implementación de lectores personalizados
← Volver a Go Academy