Saltar al contenido principal
eLearner.app
Módulo 1 · Lección 5 de 55/50 en el curso~10 min
Lecciones del módulo (5/5)

Entrada/salida con fmt

El paquete fmt de la biblioteca estándar es su herramienta principal para imprimir en la consola, formateando cadenas y leyendo entradas. Si has usado printf en C te sentirás como en casa, pero con un poco de refinamiento adicional gracias a los verbos %v y %T.

Print, Println, Printf: tres funciones, tres comportamientos

Go
fmt.Print("ciao ", "mondo")    // "ciao mondo"  (niente newline finale)
fmt.Println("ciao", "mondo")   // "ciao mondo\n" (newline + spazi tra argomenti)
fmt.Printf("eta=%d\n", 36)     // "eta=36\n"    (format string esplicita)

Los verbos que usarás todo el tiempo

VerboQué imprimeEjemplo
CÓDIGOPH0"valor predeterminado" — funciona en cualquier tipoCÓDIGOPH1
CÓDIGOPH2como %v pero con nombres de campos en estructurasCÓDIGOPH4
CÓDIGOPH5Representación de "sintaxis Go" del valorCÓDIGOPH6
CÓDIGOPH7el tipo del valorCÓDIGOPH8
CÓDIGOPH9entero en base 10CÓDIGOPH10
CÓDIGOPH11flotadorCÓDIGOPH12
CÓDIGOPH13flotante con 2 decimalesCÓDIGOPH14
CÓDIGOPH15cadenaCÓDIGOPH16
CÓDIGOPH17cadena "entrecomillada" (con comillas y escapes)CÓDIGOPH18
CÓDIGOPH19booleanoCÓDIGOPH20
CÓDIGOPH21hexadecimal (minúscula)CÓDIGOPH22
CÓDIGOPH23binarioCÓDIGOPH24
Go
u := struct{ Name string; Age int }{"Ada", 36}
fmt.Printf("%v\n", u)   // {Ada 36}
fmt.Printf("%+v\n", u)  // {Name:Ada Age:36}
fmt.Printf("%T\n", 3.14) // float64

Sprintf: construyendo cadenas sin imprimirlas

La misma interfaz que Printf, pero el resultado se le devuelve como un CÓDIGOPH1:

Go
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anni

Lo usará constantemente para crear mensajes, registros y errores.

Errorf: cadenas + ajuste de error

fmt.Errorf crea un error con formato de estilo Printf. con el verbo especial %w puedes ajustar un error existente para preservar su cadena (cubriremos esto en profundidad en el módulo Interfaces):

Go
if _, err := os.Open("missing"); err != nil {
    return fmt.Errorf("apertura config: %w", err)
}

Tu turno

Ejercicio#go.m1.l5.e1
Intentos: 0Cargando...

Imprima la cadena 'ciao mondo' usando fmt.Println.

Cargando editor...
Mostrar pista

`fmt.Println` toma una cadena y agrega la nueva línea.

Solución disponible después de 3 intentos

Ejercicio#go.m1.l5.e2
Intentos: 0Cargando...

Utilice fmt.Printf para imprimir 'eta=36' seguido de una nueva línea, utilizando el verbo %d para el número entero.

Cargando editor...
Mostrar pista

`Printf` no agrega una nueva línea: debe incluir ` ` en la cadena de formato.

Solución disponible después de 3 intentos

Cuestionario#go.m1.l5.e3
Listo

¿Qué verbo imprime el TIPO dinámico de un valor?

Go
fmt.Printf("?\n", 3.14)
Opciones de respuesta

Resumen

  • Print/Println/Printf difieren en espacios y nuevas líneas.
  • %v es el comodín que funciona en cualquier tipo; %+v muestra los nombres de los campos.
  • %T imprime el tipo (útil para una depuración rápida).
  • Sprintf construye cadenas; Errorf genera errores al ajustar (%w).
  • Printf NO agrega una nueva línea: escríbala usted mismo en la cadena de formato.