Programmation en Go/Formatage de texte

Formatage de types de base

modifier

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

fmt.Printf()

modifier

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
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

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

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