Récapitulatif - Noms d'utilisateur uniques
Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 37 sur 68.
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
FacileConstruisez un système d'enregistrement de noms d'utilisateur qui empêche les doublons en utilisant l'idiome des ensembles (set) en Go. Ce défi démontre comment créer un système de gestion d'utilisateurs robuste qui garantit l'unicité des noms d'utilisateur à travers tous les enregistrements.
Vous recevrez deux entrées :
- Une chaîne contenant les noms d'utilisateur existants séparés par des virgules (par exemple,
"alice123,bob_dev,charlie2024,diana_codes") - Une chaîne contenant les nouvelles tentatives d'enregistrement de noms d'utilisateur séparées par des virgules (par exemple,
"eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")
Votre tâche consiste à :
- Créer un ensemble en utilisant l'idiome Go
map[string]struct{}pour stocker les noms d'utilisateur enregistrés - Analyser la première chaîne d'entrée en la divisant au niveau des virgules pour obtenir les noms d'utilisateur existants
- Ajouter chaque nom d'utilisateur existant à votre ensemble en utilisant le littéral de structure vide
{}comme valeur - Analyser la deuxième chaîne d'entrée en la divisant au niveau des virgules pour obtenir les nouvelles tentatives d'enregistrement
- Pour chaque tentative d'enregistrement, vérifier si le nom d'utilisateur existe déjà dans l'ensemble en utilisant l'idiome comma ok
- Afficher le processus d'enregistrement pour chaque tentative :
- Si le nom d'utilisateur est disponible :
"Registered: [username]"et l'ajouter à l'ensemble - Si le nom d'utilisateur existe déjà :
"Username taken: [username]"
- Si le nom d'utilisateur est disponible :
- Après avoir traité toutes les tentatives d'enregistrement, afficher un résumé complet :
"Registration Summary:""Initial usernames: [initial_count]""Registration attempts: [attempts_count]""Successful registrations: [successful_count]""Rejected (duplicate): [rejected_count]""Total registered usernames: [total_count]"
- Enfin, lister tous les noms d'utilisateur enregistrés dans le système :
- En-tête :
"All registered usernames:" - Chaque nom d'utilisateur sur une ligne séparée :
"@[username]"
- En-tête :
Utilisez le package strings pour diviser les chaînes d'entrée au niveau des virgules. Ce défi démontre comment l'idiome des ensembles en Go fournit une solution efficace pour prévenir les doublons dans les systèmes d'enregistrement d'utilisateurs, garantissant l'intégrité des données tout en offrant des performances de recherche rapides pour la validation des noms d'utilisateur.
Essayez vous-même
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
// Lire l'entrée
var existingUsernames string
var newRegistrations string
fmt.Scanln(&existingUsernames)
fmt.Scanln(&newRegistrations)
// Analyser les chaînes d'entrée
existing := strings.Split(existingUsernames, ",")
attempts := strings.Split(newRegistrations, ",")
// Créer un ensemble en utilisant l'idiome Go
userSet := make(map[string]struct{})
// TODO: Écrivez votre code ci-dessous
// 1. Ajouter les noms d'utilisateur existants à l'ensemble
// 2. Traiter chaque tentative d'inscription
// 3. Afficher les résultats d'inscription pour chaque tentative
// 4. Calculer et afficher le résumé
// 5. Lister tous les noms d'utilisateur inscrits (n'oubliez pas de trier pour une sortie cohérente)
}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 uniques