gob/README.md

105 lines
3.9 KiB
Markdown
Raw Normal View History

2023-09-23 10:15:29 +00:00
# gob
2023-10-19 11:18:51 +00:00
Ensemble de librairies personnalisées en Go
## Architecture
### collection
Le paquet **collection** contient quelques fonctions utiles pour la gestion des slices (ajout, insertion, comparaison de slices, différence, intersection, conversion, map/reduce, etc.).
Il implémente également quelques collections non présentes, à lheure actuelle, dans la librairie standard :
- Les piles : collection.Stack
- Les files : collection.Queue
- Les collections déléments uniques : collection.Set
**collection/concurrent** est une sous-bibliothèque pour alimenter les slices et les maps de manière concurrente et en toute sécurité.
**collection/json** permet de gérer des objets json (modification, parcours, import, export).
### compare
Le paquet **compare** implémente différentes fonctions de comparaison de chaînes de caractères (insensible à la casse, tri naturel, prise en compte des accents, etc.), et permet daggréger plusieurs fonctions de comparaison.
### convert
Le paquet **convert** fournit le nécessaire pour convertir des variables typées en dautres types de manière transparente. Types actuellement gérés :
- Booléens,
- Caractères (rune, byte),
- Entiers (int, int8, int16, int32, int64, uint, uint8, uint16, uint62, uint64),
- Nombres à virgule flottante (float32, float64),
- Nombres complexes (complex64, complex128),
- Chaînes de caractères,
- Collections (slice, map),
- Structures.
Tous ces types sont convertibles entre eux.
### datetime
Le paquet **datetime** implémente des structures pour gérer des temps :
- datetime.Clock : pour gérer une heure dans la journée,
- datetime.Date : pour gérer une date, sans indication de lheure,
- datetime.DateTime : pour gérer une date avec indication de lheure.
- Range : pour gérer une période entre deux temps.
2024-02-17 18:06:37 +00:00
### number
Le paquet **number** implémente une structure pour gérer des opérations sur les nombres réels.
Un nombre peut être présenté sous différentes formes (dans une base donnée) :
- Format entier (ex: 58)
- Format décimal (ex: 36.25)
- Format scientifique (ex : 42.5E-18)
- Fraction (ex : 12/5)
Un nombre peut être également indérminé (NaN, ±∞)
2023-10-19 11:18:51 +00:00
### format
Le paquet **format** fournit le nécessaire pour formater la sortie terminal :
- Alignement des entrées (utile pour afficher un tableau),
- Couleurs et styles (gras, italique, etc.).
Seuls les terminaux supportant les chaînes déchappement ASCII sont supportés.
### ini
Le paquet **ini** permet de parser et de gérer des fichiers de configuration (générations avec lextension .ini ou .conf).
### option
Le paquet **option** implémente en Go les types Option et Result existant dans certains langages de programmation (comme Rust).
### random
Le paquet **random** fournit des fonctions pour générer des variables avec des caractères aléatoires.
### secret
Le paquet **secret** permet de générer des hashs ou de chiffrer des chaînes de caractères.
### shell
Le paquet **shell** regroupe des sous-paquets dédiés à faciliter la programmation dapplications en ligne de commandes.
#### shell/command
**shell/command** définit des interfaces permettant de parser les arguments dune commande saisie. Une implémentation fonctionnelle est fournie dans le sous-paquet **shell/command/flag**.
#### shell/console
**shell/console** définit des interfaces dédiés à la programmation de CLI (_Command Line Interface_). Il fournit également des fonctions pour récupérer directement des entrées saisies dans le terminal dans des variables.
#### shell/file
**shell/file** permet de récupérer de façon détaillée les informations dun fichier ou dune arborescence de fichiers.
#### shell/scanner
**shell/scanner** fournit un outil pour découper une ou plusieurs lignes de caractères en mots selon des critères définis (chaîne déchappment, guillemets, etc.).