0Pricing
Go Academy · Lección

Sprintf y Fprintf

Formatee cadenas y escritores

Sprintf y Fprintf 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.

La familia de Printf

El paquete fmt tiene tres funciones de formato relacionadas:

  • Printf escribe en la salida estándar.
  • Sprintf devuelve una cadena con formato.
  • Fprintf escribe en cualquier writer.
package main

import "fmt"

func main() {
    fmt.Printf("hello %s\n", "world")
}

Sprintf devuelve una cadena

fmt.Sprintf da formato exactamente igual que Printf, pero, en lugar de imprimir el resultado, lo devuelve como una cadena que puede almacenar o reutilizar.

package main

import "fmt"

func main() {
    msg := fmt.Sprintf("%s scored %d", "Bob", 95)
    fmt.Println(msg)
}

Construir identificadores

Sprintf resulta práctico para ensamblar claves, nombres de archivo o etiquetas a partir de varias partes.

package main

import "fmt"

func main() {
    id := fmt.Sprintf("user-%04d", 42)
    fmt.Println(id)
}

Dar formato a números como texto

Use Sprintf para convertir números en cadenas con un formato adecuado, por ejemplo, para representar importes monetarios.

package main

import "fmt"

func main() {
    label := fmt.Sprintf("Price: $%.2f", 7.5)
    fmt.Println(label)
}

Fprintf escribe en un writer

fmt.Fprintf recibe un io.Writer como primer argumento y escribe en él con formato. os.Stdout es uno de esos writers.

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Fprintf(os.Stdout, "to stdout: %d\n", 1)
}

Escribir en la salida de error estándar

Envíe los diagnósticos a os.Stderr con Fprintf para mantenerlos separados de la salida normal.

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Fprintf(os.Stderr, "warning: %s\n", "low disk")
}

Fprintf en un Builder

Como strings.Builder también es un io.Writer, puede dar formato directamente en él y leer la cadena al final.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    fmt.Fprintf(&b, "%s=%d;", "x", 10)
    fmt.Fprintf(&b, "%s=%d", "y", 20)
    fmt.Println(b.String())
}

Fprintf en un bytes.Buffer

Un bytes.Buffer es otro destino habitual para un writer. Construya el contenido y conviértalo después en una cadena.

package main

import (
    "bytes"
    "fmt"
)

func main() {
    var buf bytes.Buffer
    fmt.Fprintf(&buf, "row %d\n", 1)
    fmt.Fprintf(&buf, "row %d\n", 2)
    fmt.Print(buf.String())
}

Sprint y Fprint sin f

Las versiones con f reciben una cadena de formato. Quite la f para usar Sprint/Fprint, que simplemente concatenan los argumentos con el formato predeterminado.

package main

import "fmt"

func main() {
    s := fmt.Sprint("a", 1, true)
    fmt.Println(s)
}

Sprintln añade espacios

fmt.Sprintln une los argumentos con espacios y añade un salto de línea, devolviendo la cadena.

package main

import "fmt"

func main() {
    s := fmt.Sprintln("x", 1, "y", 2)
    fmt.Print(s)
}

Elegir la herramienta adecuada

Elija según el destino:

  • ¿Necesita una cadena? Use Sprintf.
  • ¿Escribe en stdout? Use Printf.
  • ¿Escribe en un archivo, un buffer o un flujo de errores? Use Fprintf.
package main

import (
    "fmt"
    "os"
)

func main() {
    s := fmt.Sprintf("count=%d", 3)
    fmt.Fprintf(os.Stdout, "%s\n", s)
}

Comprobación rápida

¿Qué función devuelve el texto con formato en lugar de imprimirlo?

Recapitulación: Sprintf y Fprintf

Ha aprendido la familia de funciones de formato:

  • Sprintf devuelve una cadena.
  • Fprintf escribe en cualquier io.Writer (stdout, stderr, buffers y builders).
  • Las variantes sin f usan el formato predeterminado.
package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    fmt.Fprintf(&b, "result=%s", fmt.Sprintf("%d%%", 80))
    fmt.Println(b.String())
}

Preguntas frecuentes

¿La lección «Sprintf y Fprintf» es gratis?

Sí — el texto completo de «Sprintf y Fprintf» 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 «Sprintf y Fprintf»?

Formatee cadenas y escritores 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 «Sprintf y Fprintf»?

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. Verbos de Printf
  2. Sprintf y Fprintf
  3. La interfaz Stringer
  4. Escaneo de entrada
← Volver a Go Academy