Aliasing de Package
Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 54 sur 68.
Parfois, vous devez donner à un package importé un nom différent dans votre fichier. C’est ce qu’on appelle un alias de package, et Go simplifie cela grâce à une syntaxe claire.
Pour créer un alias, vous indiquez le nouveau nom avant le chemin du package dans votre instruction d’importation :
import f "fmt"Maintenant, au lieu d'utiliser fmt.Println(), vous pouvez utiliser la version plus courte f.Println(). C'est particulièrement utile dans deux situations : lorsque vous avez des noms de packages très longs que vous souhaitez raccourcir, ou lorsque vous devez éviter les collisions de noms entre des packages qui ont le même nom.
package main
import f "fmt"
func main() {
f.Println("Hello with an alias!")
}L’alias de package vous offre de la flexibilité dans la manière de référencer les packages importés, ce qui rend votre code plus lisible et vous aide à gérer des scénarios d’importation complexes.
Défi
FacileCréez un programme qui montre l’utilisation d’alias de packages en important plusieurs packages avec des alias personnalisés et en les utilisant pour effectuer diverses opérations. Ce défi mettra à l’épreuve votre capacité à créer des alias pertinents pour les packages et à les utiliser de manière cohérente dans tout votre programme.
Vous recevrez deux entrées :
- Une chaîne contenant les définitions d’alias de packages au format
"package1:alias1,package2:alias2,package3:alias3"(par exemple,"fmt:output,strings:text,strconv:convert") - Une chaîne contenant les opérations à effectuer au format
"operation1:data1|operation2:data2|operation3:data3"(par exemple,"print:Hello World|upper:go programming|parse:42")
Votre tâche consiste à :
- Analyser la première entrée en la divisant sur les virgules afin d’obtenir les définitions individuelles des alias de packages
- Pour chaque définition d’alias, la diviser sur les deux-points afin d’obtenir le nom du package d’origine et son alias
- Importer les packages en utilisant les alias spécifiés :
- Importer
fmtavec l’alias fourni - Importer
stringsavec l’alias fourni - Importer
strconvavec l’alias fourni
- Importer
- Afficher les informations de configuration des alias :
"=== PACKAGE ALIAS DEMONSTRATION ===""Setting up package aliases:"- Pour chaque alias :
"- [original_package] aliased as '[alias]'"
- Analyser la seconde entrée en la divisant sur les barres verticales afin d’obtenir les opérations individuelles
- Pour chaque opération, la diviser sur les deux-points afin d’obtenir le type d’opération et les données
- Afficher l’en-tête des opérations :
"Performing operations using aliases:" - Pour chaque opération, effectuer l’action correspondante en utilisant les packages avec alias :
- Pour les opérations
"print": utiliser l’alias de fmt pour afficher"[fmt_alias].Println: [data]" - Pour les opérations
"upper": utiliser l’alias de strings pour convertir les données en majuscules et afficher"[strings_alias].ToUpper: [uppercase_data]" - Pour les opérations
"lower": utiliser l’alias de strings pour convertir les données en minuscules et afficher"[strings_alias].ToLower: [lowercase_data]" - Pour les opérations
"parse": utiliser l’alias de strconv pour analyser les données comme un entier et afficher"[strconv_alias].Atoi: [parsed_number]" - Pour les opérations
"format": utiliser l’alias de fmt pour formater et afficher"[fmt_alias].Sprintf: Formatted -> [data]"
- Pour les opérations
- Compter et afficher les statistiques des opérations :
"Operation Summary:""Total operations performed: [total_operations]""Packages used: [comma_separated_list_of_aliases_used]"
- Afficher les avantages des alias :
"Benefits demonstrated:""- Shorter function calls using aliases""- Improved code readability""- Avoided potential naming conflicts"
- Afficher le message de fin :
"Package aliasing demonstration completed successfully"
Utilisez le package strings pour diviser les chaînes d’entrée et manipuler le texte, le package strconv pour convertir les chaînes en entiers, et le package fmt pour la sortie formatée. N’oubliez pas d’utiliser les alias de manière cohérente dans tout votre programme au lieu des noms de packages d’origine. Ce défi montre comment l’utilisation d’alias de packages peut rendre votre code plus concis et plus lisible tout en évitant les conflits de noms.
Essayez vous-même
package main
import (
"bufio"
f "fmt"
"os"
"sort"
c "strconv"
s "strings"
)
func main() {
// Lire l'entrée en utilisant bufio.Scanner pour gérer correctement les espaces
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
aliasInput := scanner.Text()
scanner.Scan()
operationsInput := scanner.Text()
// Analyser les définitions d'alias
aliasDefinitions := s.Split(aliasInput, ",")
// Analyser les opérations
operations := s.Split(operationsInput, "|")
// TODO: Écrivez votre code ci-dessous
// 1. Analyser chaque définition d'alias pour obtenir le nom du paquet et l'alias (vérifier les longueurs)
// 2. Afficher l'en-tête de démonstration de l'alias du paquet et les informations de configuration
// 3. Traiter chaque opération en utilisant le paquet aliasé approprié
// 4. Compter les opérations et suivre quels alias ont été utilisés (maintenir l'ordre ou trier)
// 5. Afficher le résumé des opérations et les avantages
// N'oubliez pas d'utiliser les alias de manière cohérente tout au long de votre programme
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportements6Go idiomatique : Les ensembles
L'idiome des ensembles en GoCréer un ensembleAjouter à un ensembleVérifier l'appartenanceSupprimer d'un ensembleItérer sur un ensembleRécapitulatif - Noms d'utilisateur uniques9Packages et Portée
Qu'est-ce qu'un Package ?Exporté vs Non-exportéCréer un Package SimpleAliasing de PackageL'identificateur blanc `_`La fonction `init`Récapitulatif - Créer un utilitaireEntraînez-vous par vous-même : Compilateur Go en ligne