En Go, une string est une séquence immuable d'octets, qui ne représentent pas nécessairement des caractères.
Un littéral de chaîne se définit entre guillemets doubles :
const name = "Jane"
On peut concaténer des strings avec l'opérateur + :
"Jane" + " " + "Austen"
// => "Jane Austen"
Certains caractères spéciaux doivent être échappés avec une barre oblique inversée en préfixe, comme \t pour une tabulation et \n pour un saut de ligne à l'intérieur des strings.
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
Le paquet strings contient de nombreuses fonctions utiles pour manipuler les strings.
Pour plus d'informations sur les fonctions de manipulation de chaînes, consulte la documentation du paquet strings.
Voici quelques exemples :
import "strings"
// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"
// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"
Comme mentionné précédemment, certains caractères spéciaux doivent être échappés avec une barre oblique inversée en préfixe. Voici une liste plus détaillée de ces caractères spéciaux :
| Valeur | Description |
|---|---|
\a |
Alerte ou sonnerie |
\b |
Retour arrière |
\\ |
Barre oblique inversée |
\t |
Tabulation horizontale |
\n |
Saut de ligne |
\f |
Saut de page |
\r |
Retour chariot |
\v |
Tabulation verticale |
\' |
Guillemet simple |
\" |
Guillemet double |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
Les littéraux de chaîne bruts utilisent des accents graves (`) comme délimiteur au lieu des guillemets doubles, et tous les caractères qu'ils contiennent sont interprétés littéralement, ce qui signifie qu'il n'est pas nécessaire d'échapper les caractères ni les sauts de ligne.
Voici un exemple de chaîne sur plusieurs lignes :
const daltons = `Joe
William
Jack
Averell`
Cette string contient plusieurs lignes.
Plus précisément, elle contient 3 \n.
Cependant, comme il s'agit d'un littéral de chaîne brut, il n'est pas nécessaire d'écrire explicitement \n dans la string.
Les sauts de ligne sont interprétés littéralement.
Voici quelques autres exemples qui comparent les littéraux de chaîne bruts aux littéraux de chaîne classiques :
`abc`
// same as "abc"
"\"" // regular string literal with 1 character: a double quote
// same as `"` a raw string literal with 1 character: a double quote
`\n
` // raw string literal with 3 character: a backslash, an 'n', and a newline
// same as "\\n\n" a regular string literal with 3 characters: a backslash, an 'n', and a newline
"\t\n" // regular string literal with 2 characters: a tab and a newline
`\t\n`// raw string literal with 4 characters: two backslashes, a 't', and an 'n'