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 contratobytes.Buffer,os.Stdouty las respuestas HTTP la implementan- Funciona con
fmt.Fprintfyio.WriteString - Acepte
io.Writerpara 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
- La interfaz Reader
- La interfaz Writer
- Funciones auxiliares de io
- Implementación de lectores personalizados