Leçons du module (5/5)
Entrées/sorties avec fmt
Le package fmt de la bibliothèque standard est votre principal outil pour imprimer sur
la console, le formatage des chaînes et la lecture des entrées. Si vous avez utilisé
printf en C, vous vous sentirez comme chez vous, mais avec un raffinement supplémentaire
grâce aux verbes %v et %T.
Print, Println, Printf : trois fonctions, trois comportements
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)Les verbes que vous utiliserez tout le temps
| Verbe | Ce qu'il imprime | Exemple |
|---|---|---|
%v | "valeur par défaut" — fonctionne sur n'importe quel type | {Ada 36} |
%+v | comme %v mais avec des noms de champs dans les structures | {Name:Ada Age:36} |
%#v | Représentation "Go-syntaxe" de la valeur | main.User{Name:"Ada", Age:36} |
%T | le type de la valeur | float64 |
%d | entier en base 10 | {Ada 36}0 |
{Ada 36}1 | flotter | {Ada 36}2 |
{Ada 36}3 | float avec 2 décimales | {Ada 36}4 |
{Ada 36}5 | chaîne | {Ada 36}6 |
{Ada 36}7 | chaîne "citée" (avec guillemets et échappements) | {Ada 36}8 |
{Ada 36}9 | booléen | %+v0 |
%+v1 | hexadécimal (minuscule) | %+v2 |
%+v3 | binaire | %+v4 |
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 : construire des chaînes sans les imprimer
Même interface que Printf, mais le résultat vous est renvoyé sous forme de
string :
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anniVous l'utiliserez constamment pour créer des messages, des journaux et des erreurs.
Errorf : chaînes + emballage d'erreur
fmt.Errorf crée un error avec un formatage de style Printf. Avec le
verbe spécial %w, vous pouvez envelopper une erreur existante pour préserver sa
chaîne (nous aborderons cela en profondeur dans le module Interfaces) :
if _, err := os.Open("missing"); err != nil {
return fmt.Errorf("apertura config: %w", err)
}A ton tour
Imprimez la chaîne 'ciao mondo' en utilisant fmt.Println.
Afficher l'indice
`fmt.Println` prend une chaîne et ajoute la nouvelle ligne elle-même.
Solution disponible après 3 tentatives
Utilisez fmt.Printf pour imprimer 'eta=36' suivi d'une nouvelle ligne, en utilisant le verbe %d pour l'entier.
Afficher l'indice
`Printf` n'ajoute pas de nouvelle ligne : vous devez inclure ` ` dans la chaîne de format.
Solution disponible après 3 tentatives
Quel verbe imprime le TYPE dynamique d'une valeur ?
fmt.Printf("?\n", 3.14)Récapitulatif
Print/Println/Printfdiffèrent par les espaces et les nouvelles lignes.%vest le joker qui fonctionne sur n'importe quel type ;%+vaffiche les noms de champs.%Timprime le type (utile pour un débogage rapide).Sprintfconstruit des chaînes ;Errorfgénère des erreurs avec le packaging (%w).Printfn'ajoute PAS de nouvelle ligne : écrivez-la vous-même dans la chaîne de format.