Comment formater des chaînes dans Go

Comme les chaînes sont souvent composées de texte écrit, il peut arriver que nous souhaitions avoir un meilleur contrôle sur l’apparence des chaînes pour les rendre plus lisibles pour les humains par le biais de la ponctuation, des sauts de ligne et de l’indentation.

Dans ce didacticiel, nous allons examiner certaines des manières dont nous pouvons utiliser les chaînes Go pour nous assurer que tout le texte de sortie est correctement formaté.

Littéraux de chaîne

Commençons par différencier un string literal et une string value. Un littéral de chaîne correspond à ce que nous voyons dans le code source d’un programme informatique, y compris les guillemets. Une valeur de chaîne correspond à ce que nous voyons lorsque nous appelons la fonction + fmt.Println + et exécutons le programme.

Dans le programme «Hello, World!», Le littéral de chaîne est " Hello, World! ", Tandis que la valeur de chaîne est + Hello, World! + Sans les guillemets. La valeur de chaîne correspond à ce que nous voyons comme sortie dans une fenêtre de terminal lorsque nous exécutons un programme Go.

Mais certaines valeurs de chaîne peuvent avoir besoin d’inclure des guillemets, comme lorsque nous citons une source. Les littéraux de chaîne et les valeurs de chaîne n’étant pas équivalents, il est souvent nécessaire d’ajouter une mise en forme supplémentaire aux littéraux de chaîne pour garantir que les valeurs de chaîne s’affichent comme prévu.

Citations

Comme nous pouvons utiliser des guillemets arrières (+ \ + ) ou des guillemets doubles ( + + + +) dans Go, il est simple d’incorporer des guillemets dans une chaîne en utilisant des guillemets doubles dans une chaîne entourée par des guillemets arrières:

`Sammy says, "Hello!"`

Ou, pour utiliser une citation en arrière, vous pouvez placer la chaîne entre guillemets:

"Sammy likes the `fmt` package for formatting strings.."

En combinant les guillemets arrières et les guillemets doubles, nous pouvons contrôler l’affichage des guillemets et des guillemets arrières dans nos chaînes.

Il est important de se rappeler que l’utilisation de guillemets arrières dans Go crée un littéral + raw, et que l’utilisation de guillemets doubles crée un littéral` + interpr`. Pour en savoir plus sur la différence, lisez le tutoriel An Introduction à l’utilisation de Strings in Go.

Personnages d’échappement

Une autre façon de formater des chaînes consiste à utiliser un caractère escape. Les caractères d’échappement sont utilisés pour indiquer au code que le caractère suivant a une signification particulière. Les caractères d’échappement commencent tous par la barre oblique inversée (+ \ +) combinée à un autre caractère d’une chaîne pour formater la chaîne donnée d’une certaine manière.

Voici une liste de plusieurs des caractères d’échappement communs:

Escape Character How it formats

\

Backslash

"

Double Quote

\n

Line Break

\t

Tab (horizontal indentation)

Utilisons un caractère d’échappement pour ajouter les guillemets à l’exemple ci-dessus, mais cette fois-ci, nous utiliserons des guillemets doubles pour désigner la chaîne:

fmt.Println("Sammy says, \"Hello!\"")
OutputSammy says, "Hello!"

En utilisant le caractère d’échappement `+ \" + `, nous pouvons utiliser des guillemets doubles pour entourer une chaîne contenant du texte entre guillemets doubles.

Nous pouvons utiliser le caractère d’échappement + \ n + pour séparer des lignes sans appuyer sur la touche Entrée ou Retour:

fmt.Println("This string\nspans multiple\nlines.")
OutputThis string
spans multiple
lines.

Nous pouvons également combiner des personnages d’échappement. Imprimons une chaîne de plusieurs lignes et incluons l’espacement des tabulations pour une liste détaillée, par exemple:

fmt.Println("1.\tShark\n2.\tShrimp\n10.\tSquid")
Output1.      Shark
2.      Shrimp
10.     Squid

L’indentation horizontale fournie avec le caractère d’échappement + \ t + assure l’alignement dans la deuxième colonne de l’exemple précédent, ce qui rend la sortie extrêmement lisible pour les humains.

Les caractères d’échappement sont utilisés pour ajouter une mise en forme supplémentaire aux chaînes qui peut être difficile voire impossible à obtenir. Sans caractères d’échappement, vous ne pourriez pas construire la chaîne + Sammy dit:" J’aime utiliser le paquet ` fmt \ ’" + `.

Plusieurs lignes

L’impression de chaînes sur plusieurs lignes peut rendre le texte plus lisible par les humains. Avec plusieurs lignes, les chaînes peuvent être regroupées dans un texte propre et ordonné, formatées sous forme de lettre ou utilisées pour conserver les sauts de ligne d’un poème ou des paroles d’une chanson.

Pour créer des chaînes qui s’étendent sur plusieurs lignes, des guillemets arrières sont utilisés pour entourer la chaîne. Gardez à l’esprit que, même si cela préservera les retours à la ligne, il crée également un littéral chaîne "raw +".

`
This string is on
multiple lines
within three single
quotes on either side.
`

Si vous imprimez ceci, vous remarquerez qu’il y a un retour en tête et un compte en fin:

Output
This string is on
multiple lines
within three single
quotes on either side.

Pour éviter cela, vous devez insérer la première ligne immédiatement après le devis précédent et terminer par la dernière.

`This string is on
multiple lines
within three single
quotes on either side.`

Si vous devez créer un littéral de chaîne interprété, vous pouvez le faire avec des guillemets doubles et l’opérateur +, mais vous devrez insérer vos propres sauts de ligne.

"This string is on\n" +
"multiple lines\n" +
"within three single\n" +
"quotes on either side."

Bien que les guillemets arrières facilitent l’impression et la lecture de textes longs, si vous avez besoin d’un littéral de chaîne interprété, vous devrez utiliser des guillemets doubles.

Littéraux de chaîne bruts

Que faire si nous ne voulons pas de formatage spécial dans nos chaînes? Par exemple, il se peut que nous devions comparer ou évaluer des chaînes de code informatique qui utilisent la barre oblique inverse à dessein; nous ne voudrons donc pas que Go l’utilise comme caractère d’échappement.

Un littéral de chaîne * raw * indique à Go d’ignorer toute la mise en forme d’une chaîne, y compris les caractères d’échappement.

Nous créons une chaîne brute en utilisant des guillemets arrières autour de la chaîne:

fmt.Println(`Sammy says,\"The balloon\'s color is red.\"`)
OutputSammy says,\"The balloon\'s color is red.\"

En construisant une chaîne brute en utilisant des guillemets arrières autour d’une chaîne donnée, nous pouvons conserver des barres obliques inverses et d’autres caractères utilisés comme caractères d’échappement.

Conclusion

Ce didacticiel a présenté plusieurs manières de formater du texte dans Travailler avec des chaînes. En utilisant des techniques telles que les caractères d’échappement ou les chaînes brutes, nous sommes en mesure de nous assurer que les chaînes de notre programme sont restituées correctement à l’écran, de sorte que l’utilisateur final puisse facilement lire tout le texte de sortie.