Ceci est une ancienne révision du document !
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 voir dans de nombreux langages. Ainsi, par exemple, le premier serait de comparer. Comparez (a, b), vous lui donnez deux chaînes et il compare pour voir si elles sont égales. Et en fait, cette fonction de comparaison renvoie un -1. Il renvoie 0 s'ils sont égaux, il renvoie un -1 si a est inférieur à b, c' est-à-dire antérieur à celui-ci, dans l'ordre alphanumérique. Et A, il renvoie un résultat positif, si A est supérieur à B, donc si A est postérieur à B dans l'ordre alphanumérique. Donc, pour comparer, contient, donc vous donnez à S une chaîne, puis une sous-chaîne, si cette sous-chaîne est contenue dans S, elle renvoie vrai, sinon faux. Avoir un préfixe, c'est pourquoi vous lui donnez une chaîne s et un préfixe. Si cela renvoie vrai, si ce préfixe est le, s commence par un préfixe et un index s et que vous passez à une sous-chaîne, cela fait une recherche, il recherche la sous-chaîne dans s. Et il vous renvoie l'index indiquant où se trouve la première instance, instance de cette sous-chaîne dans un [INAUDIBLE]. Il s'agit donc du package de la chaîne. Désormais, le package de la chaîne fournit également un ensemble de fonctions qui manipulent les chaînes. Maintenant, quand je dis manipuler, vous pouvez dire change de chaîne, une chaîne est mutable. Mais il existe de nombreuses fonctions qui prennent une chaîne existante et renvoient une nouvelle chaîne. C'est une méthode modifiée et utile. Le premier sera donc remplacé. Avec replace, vous prenez essentiellement une chaîne et cela vous permet de remplacer des instances chaque fois qu'il la trouve dans un ancien courant, il la remplace par des courants de nouveau. Ce sont donc toutes des chaînes. Il y a donc une grosse chaîne S C'est une sous-chaîne ancienne et une autre sous-chaîne nouvelle. Remplace les anciennes instances par les nouvelles. Et revenez à une nouvelle chaîne. Donc, la chaîne d'origine n'est pas réellement modifiée. Cela vous renvoie à une nouvelle chaîne avec des remplacements pour ToLower, ToUpper. Cela prendra donc toute la chaîne et la remplacera en minuscules ou en majuscules. Je n'arrête pas de dire « changement ». Cela ne change pas la chaîne. Elle renvoie une nouvelle chaîne qui est modifiée. De plus, l'espace de découpe est utile. Cela élimine l'espace lumineux principal et arrière d'une chaîne. Cela se produit donc souvent lorsque vous lisez un fichier contenant, par exemple, et peut-être que les jetons du fichier sont séparés par des espaces. Ainsi, si vous lisez simplement directement dans le fichier, vous lirez également ces espaces, mais vous n'en avez pas besoin. Tu as juste besoin du jeton. Vous pouvez donc appeler TrimSpace pour supprimer les espaces. Un autre package qui possède de nombreuses fonctions utiles pour les chaînes est le package Strconv. Cela fournit donc généralement un ensemble de fonctions permettant de convertir des chaînes de différents types de données de base vers et depuis différents types de données de base. Certains des plus importants sont donc Atoi, car ascii to integer est ce que cela signifie. Et convertit une chaîne en entier si cette chaîne représente un entier. Disons que vous êtes en train de lire une chaîne dans un fichier et que la chaîne est un nombre 123 cent vingt-trois. Maintenant, quand vous lisez ça, et que vous le lisez sous forme de chaîne, vous ne pouvez pas faire de maths sur une chaîne, n'est-ce pas ? Vous ne pouvez pas prendre ce 123 et y ajouter 1 car c'est un type chaîne, pas un type Int. Vous devez donc lire cette chaîne et la convertir en Int. Ensuite, tu pourras faire des calculs dessus. Vous utiliseriez donc Atoi pour faire ce genre de chose. Et Itoa fait le contraire. Il convertit un Int en une chaîne, une chaîne équivalente. Ensuite, FormatFloat fait essentiellement la même chose pour float. Il convertit donc un nombre à virgule flottante en une représentation sous forme de chaîne de ce nombre à virgule flottante. Et puis ParseFloat fait le contraire, convertit une chaîne en un nombre à virgule flottante. Donc une chaîne, donc si vous avez une chaîne. 123,45, et dans une chaîne, elle peut la convertir en virgule flottante, le nombre que vous pouvez réellement faire selon la méthode.