0Pricing
Go Academy · Lección

La interfaz Writer

Escriba en cualquier destino

La interfaz Writer es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 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.

Escribir en cualquier destino

io.Writer unifica todas las salidas: archivos, redes, búferes, stdout y respuestas HTTP. Una interfaz, muchos destinos.

Definición de la interfaz

El contrato:

  • Write(p []byte) (n int, err error)

Escribe p y devuelve cuántos bytes se escribieron, además de cualquier error.

Escribir en un búfer

bytes.Buffer implementa io.Writer y recopila la salida en memoria.

package main

import (
	"bytes"
	"fmt"
)

func main() {
	var buf bytes.Buffer
	buf.Write([]byte("Hello, "))
	buf.WriteString("Writer!")
	fmt.Println(buf.String())
}

Escribir en Stdout

os.Stdout es un io.Writer. os.Stderr también.

package main

import (
	"io"
	"os"
)

func main() {
	io.WriteString(os.Stdout, "straight to stdout\n")
}

fmt.Fprintf y los escritores

La familia de funciones Fprint escribe texto con formato en cualquier io.Writer.

package main

import (
	"bytes"
	"fmt"
)

func main() {
	var buf bytes.Buffer
	fmt.Fprintf(&buf, "x = %d\n", 42)
	fmt.Print(buf.String())
}

El error de escritura parcial

Si Write devuelve n < len(p) con un error nil, se trata de una infracción del contrato denominada escritura parcial. Los escritores que cumplen el contrato la notifican como io.ErrShortWrite.

Funciones que aceptan escritores

Write functions taking io.Writer so the same logic targets a file, a buffer, or the network.

package main

import (
	"fmt"
	"io"
	"os"
)

func greet(w io.Writer, name string) {
	fmt.Fprintf(w, "Hi, %s\n", name)
}

func main() {
	greet(os.Stdout, "Ada")
}

Desacoplar la salida para las pruebas

Como las funciones reciben io.Writer, las pruebas capturan la salida en un bytes.Buffer y la comprueban, sin necesidad de acceder a archivos reales.

package main

import (
	"bytes"
	"fmt"
)

func emit(w *bytes.Buffer) { fmt.Fprint(w, "result") }

func main() {
	var b bytes.Buffer
	emit(&b)
	fmt.Println("captured:", b.String())
}

Escribir bytes frente a cadenas

Write recibe un slice de bytes; io.WriteString es una utilidad para cadenas que evita una asignación cuando el escritor la admite.

package main

import (
	"io"
	"os"
)

func main() {
	os.Stdout.Write([]byte("bytes\n"))
	io.WriteString(os.Stdout, "string\n")
}

Compruebe siempre los errores de escritura

Una escritura en un archivo o un socket puede fallar a mitad del flujo (por ejemplo, si el disco se llena o se interrumpe la conexión). Compruebe el error devuelto, especialmente con destinos de escritura que no sean de memoria.

Una interfaz, muchos destinos

  • Archivos, búferes, salida estándar y salida de error
  • Escritores de respuestas HTTP
  • Envoltorios de compresión y cifrado

Todos satisfacen io.Writer, por lo que su código no depende del destino.

Comprobación rápida

Compruebe sus conocimientos sobre io.Writer.

Resumen

Ha aprendido la interfaz de salida fundamental.

  • Write(p []byte) (int, error) es todo el contrato
  • bytes.Buffer, os.Stdout y las respuestas HTTP la implementan
  • Funciona con fmt.Fprintf y io.WriteString
  • Acepte io.Writer para crear API flexibles y fáciles de probar

Preguntas frecuentes

¿La lección «La interfaz Writer» es gratis?

Sí — el texto completo de «La interfaz Writer» 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 «La interfaz Writer»?

Escriba en cualquier destino 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 2 de 4.

¿Cuánto tiempo toma la lección «La interfaz Writer»?

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