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
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
| Verbo | Qué imprime | Ejemplo |
|---|---|---|
| CÓDIGOPH0 | "valor predeterminado" — funciona en cualquier tipo | CÓDIGOPH1 |
| CÓDIGOPH2 | como %v pero con nombres de campos en estructuras | CÓDIGOPH4 |
| CÓDIGOPH5 | Representación de "sintaxis Go" del valor | CÓDIGOPH6 |
| CÓDIGOPH7 | el tipo del valor | CÓDIGOPH8 |
| CÓDIGOPH9 | entero en base 10 | CÓDIGOPH10 |
| CÓDIGOPH11 | flotador | CÓDIGOPH12 |
| CÓDIGOPH13 | flotante con 2 decimales | CÓDIGOPH14 |
| CÓDIGOPH15 | cadena | CÓDIGOPH16 |
| CÓDIGOPH17 | cadena "entrecomillada" (con comillas y escapes) | CÓDIGOPH18 |
| CÓDIGOPH19 | booleano | CÓDIGOPH20 |
| CÓDIGOPH21 | hexadecimal (minúscula) | CÓDIGOPH22 |
| CÓDIGOPH23 | binario | CÓDIGOPH24 |
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) // float64Sprintf: construyendo cadenas sin imprimirlas
La misma interfaz que Printf, pero el resultado se le devuelve como un
CÓDIGOPH1:
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anniLo 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):
if _, err := os.Open("missing"); err != nil {
return fmt.Errorf("apertura config: %w", err)
}Tu turno
Imprima la cadena 'ciao mondo' usando fmt.Println.
Mostrar pista
`fmt.Println` toma una cadena y agrega la nueva línea.
Solución disponible después de 3 intentos
Utilice fmt.Printf para imprimir 'eta=36' seguido de una nueva línea, utilizando el verbo %d para el número entero.
Mostrar pista
`Printf` no agrega una nueva línea: debe incluir ` ` en la cadena de formato.
Solución disponible después de 3 intentos
¿Qué verbo imprime el TIPO dinámico de un valor?
fmt.Printf("?\n", 3.14)Resumen
Print/Println/Printfdifieren en espacios y nuevas líneas.%ves el comodín que funciona en cualquier tipo;%+vmuestra los nombres de los campos.%Timprime el tipo (útil para una depuración rápida).Sprintfconstruye cadenas;Errorfgenera errores al ajustar (%w).PrintfNO agrega una nueva línea: escríbala usted mismo en la cadena de formato.