Aliasing de Package
Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 54 sur 68.
Parfois, vous avez besoin de donner un nom différent à un paquet importé au sein de votre fichier. C'est ce qu'on appelle l'aliasing de paquet, et Go rend cela simple grâce à une syntaxe directe.
Pour créer un alias, vous spécifiez 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'aliasing de paquets vous offre de la flexibilité dans la manière dont vous référencez les paquets importés, rendant votre code plus lisible et vous aidant à gérer des scénarios d'importation complexes.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileCréez un programme qui démontre l'aliasing de packages en important plusieurs packages avec des alias personnalisés et en les utilisant pour effectuer diverses opérations. Ce défi testera votre capacité à créer des alias significatifs pour les packages et à les utiliser de manière cohérente tout au long de votre programme.
Vous recevrez deux entrées :
- Une chaîne contenant les définitions d'alias de package 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 par les virgules pour obtenir les définitions individuelles d'alias de package
- Pour chaque définition d'alias, diviser par les deux-points pour 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 deuxième entrée en la divisant par les barres verticales (pipes) pour obtenir les opérations individuelles
- Pour chaque opération, diviser par les deux-points pour 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 aliasés :
- 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 en tant qu'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 de l'aliasing :
"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 tout au long de votre programme au lieu des noms de packages originaux. Ce défi démontre comment l'aliasing de packages peut rendre votre code plus concis et lisible tout en évitant les conflits de nommage.
Aide-mémoire
Utilisez l'alias de package pour donner aux packages importés des noms différents dans votre fichier :
import f "fmt"Maintenant, vous pouvez utiliser f.Println() au lieu de fmt.Println() :
package main
import f "fmt"
func main() {
f.Println("Hello with an alias!")
}L'alias de package est utile pour :
- Raccourcir les noms de packages très longs
- Éviter les collisions de noms entre des packages ayant le même nom
- Rendre le code plus lisible
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 utilitaire