Programmation en Go/Formatage de texte
Formatage de types de base
modifierNous allons utiliser le module "fmt" comme expliqué au chapitre Premier exemple.
fmt.Printf()
modifierCette fonction très simple prend un nombre variable d'arguments: le premier est une chaîne [de format] et les suivants sont les arguments à formater.
Dans la chaîne de format, le caractère "%" a une signification spéciale:
- suivi d'un "c", il implique la présence d'un octet ou d'un entier et le formate en caractère,
- suivi d'un "d", il implique la présence d'un entier et le formate en décimal,
- suivi d'un "f", il implique la présence d'un nombre décimal à virgule flottante,
- suivi d'un "s", il implique la présence d'une chaîne,
- suivi d'un "x", il implique la présence d'un entier et le formate en hexadécimal,
- suivi d'un "g", il implique la présence d'un réel,
- suivi d'un "v", il formate de manière automatique n'importe quel type,
- suivi d'un "T", il affiche le type de la valeur fournie.
Enfin, la chaîne "%%" est remplacée par un seul "%" à la sortie.
La fonction fmt.Sprintf a le même type d'entrée mais retourne la chaîne formatée au lieu de l'afficher.
fmt.Printf("Hello %d, %x\n", 123, 237) => Hello 123, ed
Exemple
modifiertype T struct { a int b float c string } t := &T{ 7, -2.35, "abc\tdef" } fmt.Printf("%v\n", t) fmt.Printf("%+v\n", t) fmt.Printf("%#v\n", t) fmt.Printf("%#v\n", Constantes)
affiche:
&{7 -2.35 abc def} &{a:7 b:-2.35 c:abc def} &main.T{a:7, b:-2.35, c:"abc\tdef"} map[string] float{"Pi":3.14159, "e":2.71, "g":9.81}
fmt.Println()
modifierCette fonction formate de manière automatique tout type passé comme paramètre. La contrepartie fmt.Sprintln() retourne la chaîne formatée au lieu de l'afficher. Cela revient au même que d'utiliser le formatage par défaut "%v".
String()
modifierOn peut définir la méthode "String()" pour un type quelconque et alors, Go l'utilisera pour formater la structure dans le formatage par défaut ("%v").