gob/README.md

105 lines
3.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# gob
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.
### 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, ±∞)
### 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.).