Programmation en Go/Formatage de texte

Un livre de Wikilivres.

Formatage de types de base[modifier | modifier le wikicode]

Nous allons utiliser le module "fmt" comme expliqué au chapitre Premier exemple.

fmt.Printf()[modifier | modifier le wikicode]

Cette 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[modifier | modifier le wikicode]

type 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()[modifier | modifier le wikicode]

Cette 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()[modifier | modifier le wikicode]

On 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").