Contenu du cours
Introduction à Golang
Introduction à Golang
Formatage de Chaîne
Maintenant que nous avons appris tous les types de données de base, nous pouvons explorer le formatage de chaînes. En programmation, le formatage de chaînes consiste à incorporer des valeurs de variables dans des chaînes.
Remarque
L'instruction
import
est utilisée pour importer des packages dans une application Go. Un package est un ensemble de fichiers source Go liés qui collaborent pour offrir un ensemble de fonctionnalités ou de services. Le packagefmt
fournit des fonctions qui nous permettent de formater des chaînes.
Une des fonctions du package fmt
que nous avons utilisée est la fonction Println
. La fonction Println
affiche le texte de sortie sur une nouvelle ligne à chaque fois. Cependant, il existe une fonction appelée Print
qui affiche la sortie sans passer à une nouvelle ligne :
index
package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
En général, nous pouvons utiliser ces fonctions pour insérer des valeurs de variables dans des données de chaîne en utilisant la méthode suivante :
index
package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Println("There are", n, "cats,", in, "of them are inside the house while", out, "are outside.") }
Cependant, cette méthode n'est pas très efficace car nous devons diviser la chaîne en plusieurs segments pour insérer des variables aux endroits pertinents, ce qui peut devenir fastidieux dans des cas plus complexes. La fonction Printf
résout ce problème et simplifie le processus d'affichage de la sortie formatée.
La fonction Printf
prend une chaîne de format comme premier argument, suivie des valeurs (ou variables) à insérer dans la chaîne de format. Une chaîne de format contient des espaces réservés (spécificateurs de format) qui définissent le format souhaité de la sortie.
Voici un exemple :
index
package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Printf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) }
Comme illustré par l'exemple, les Spécificateurs de Format sont des symboles qui servent de substituts pour des types de données spécifiques au sein d'une chaîne de caractères. Il existe un spécificateur de format distinct pour chaque type de données. Le tableau ci-dessous fournit une liste des spécificateurs de format de base :
Spécificateur de Format | Type de Données |
---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (or Rune) |
Les variables remplacent les substituts respectifs dans la chaîne de format. Dans la sortie de l'exemple ci-dessus, le premier %d
est remplacé par la valeur de n
. De même, le second est remplacé par la variable correspondante, qui est in
, et le dernier %d
est remplacé par la valeur de out
.
Nous pouvons également formater une chaîne et la stocker dans une variable de type chaîne en utilisant la fonction Sprintf
, qui formate une chaîne et renvoie la chaîne résultante pour stockage ou utilisation ailleurs, plutôt que de l'afficher immédiatement à l'écran :
index
package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in var text string = fmt.Sprintf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) fmt.Println("Text:", text) }
Voici un exemple plus complexe qui intègre plusieurs concepts que nous avons précédemment couverts dans un seul programme. Ce sera un exercice précieux de revoir le programme suivant et son résultat pour améliorer vos compétences en lecture de code :
index
package main import "fmt" func main() { var numA float32 = 17.7 var numB int = 10 var str string = fmt.Sprintf("It is %t that 'a' is bigger than 'b'.", numA > float32(numB)) fmt.Printf("The numbers 'a' and 'b' are %f and %d. %s", numA, numB, str) }
Dans certains cas, le compilateur effectue un transtypage implicite pour faire correspondre les valeurs avec les spécificateurs de format, comme démontré dans l'exemple suivant :
index
package main import "fmt" func main() { var char rune = 'A' fmt.Printf("The Unicode decimal value of %c is %d", char, char) }
La rune 'char' est affichée à la fois comme un caractère et comme une valeur numérique. Cependant, dans certains cas, le compilateur pourrait produire une erreur. Par exemple, le code suivant entraînera une sortie invalide car un 'float' ne peut pas être converti implicitement en 'int' :
index
var value float32 = 5.7 fmt.Printf("%d", value)
Merci pour vos commentaires !