Notes et transcriptions du cours “Démarrer avec Go” proposée par University of California, Irvine disponible sur la plateforme coursera.
Nous avons donc déjà abordé précédemment les chaînes de caractères, une construction courante dans les différents langages de programmation. Ces chaînes sont des séquences de runes en Go.
Il existe un package nommé unicode
qui fournit un ensemble de fonctions capables de travailler réellement sur les propriétés des différentes runes contenues dans les chaînes.
Il peut être très utile si vous voulez analyser le contenu d'une chaîne provenant de n'importe quel fichier ou d'une saisie utilisateur.
Si vous souhaitez évaluer cette chaîne pour effectuer une analyse syntaxique, vous avez besoin de fonctions comme celles fournies par ce package unicode
IsDigit(r rune) | indique si la rune est un nombre |
---|---|
IsSpace(r rune) | identifie les caractères d’espacement |
IsLetter(r rune) | détermine si la rune est un caractère |
ISPunct(r rune) | identifier un caractère de ponctuation |
Ces fonctions sont booléennes, elles renvoient donc “vrai” ou “faux”.
Il existe également un ensemble d'autres fonctions qui effectuent des conversions. Par exemple ToUpper(r rune) et ToLower(r rune). Vous pouvez prendre un caractère en minuscule et le transformer en majuscule ou vice versa.
Mais il existe d'autres packages impliqués dans la manipulation de chaînes comme strings
. Les fonctions qu'il fournit sont destinées à être utilisées directement sur l'ensemble de la chaîne de caractères.
Il propose donc un ensemble de fonctions de recherche. Ce sont des fonctions courantes que vous pouvez également trouver dans de nombreux langages. Par exemple compare()
.
La fonction Compare (a, b)
, prend en argument deux chaînes et il compare pour voir si elles sont égales :
La fonction contains(s, substr)
prend en paramètres une chaîne s
, et une sous-chaîne substr
. Si cette sous-chaîne est contenue dans s
, elle retourne “vrai”.
La fonction HasPrefix(s, prefix)
renvoie vrai, si ce préfixe prefix
est trouvé dans s
.
La fonction Index(s, substr)
recherche substr
dans s
et retourne la position de la première instance de sous-chaine dans s
.
Le package strings
fournit également un ensemble de fonctions capables de manipuler les chaînes. C'est à dire échanger les chaînes car une chaîne de caractères est immuable.
Mais il existe de nombreuses fonctions qui prennent une chaîne existante et renvoient une nouvelle chaîne. La chaîne initiale sera donc remplacée.
Par exemple la fonction Replace(s, old, new, n)
prend en argument une chaîne s
et vous permet de remplacer les n
premières instances de old
par new
, il la remplace par des courants de nouveau. Ce sont donc toutes des chaînes. Replace()
retourne une nouvelle chaîne. Donc, la chaîne d'origine n'est pas réellement modifiée, une nouvelle chaîne est retournée avec les remplacements souhaités.
Les fonctions ToLower(s)
, ToUpper(s)
prendront toute la chaîne et la changeront par une chaîne respectivement en minuscules ou en majuscules. Je n'arrête pas de dire « changement ». Cela ne change pas la chaîne. Les fonctions retournent une nouvelle chaîne qui contient les modifications souhaitées.
La fonction TrimSpace(s)
est également très utile pour éliminer les l'espace en début ou à la fin d'une chaîne. Cela se produit souvent lorsque vous lisez un fichier contenant, par exemple des éléments séparés par des espaces.
Un autre package qui possède de nombreuses fonctions utiles pour les chaînes est le package strconv
. Il fournit un ensemble de fonctions permettant de convertir des chaînes en différents types de base.
Quelques fonctions importantes sont Atoi()
, (Atoi signifiant ascii to integer) pour convertit une chaîne en entier si cette chaîne représente un entier. Si vous êtes en train de lire une chaîne dans un fichier et que la chaîne est “123” vous ne pouvez pas faire directement d'opération mathématique sur une chaîne. Vous ne pouvez pas prendre “123” et y ajouter 1 car c'est un type string
, pas un type int
. Vous devez donc lire cette chaîne et la convertir en int
avant de faire un calcul. Vous utiliseriez donc Atoi()
pour faire cela.
La fonction Itoa()
fait le contraire. Elle convertit un int
en une chaîne, une chaîne équivalente.
La fonction FormatFloat(f, fmt, prec, bitSize)
fait essentiellement la même chose pour un float
. elle convertit donc un nombre à virgule flottante en une représentation sous forme de chaîne de ce nombre à réel.
La fonction ParseFloat(s, bitSize)
fait le contraire, elle convertit une chaîne en un nombre à virgule flottante. Donc une chaîne “123.45” peut être convertie en nombre à virgule flottante sur lequel vous pourrez ensuite appliquer vos opérations.