Riepilogo - Nomi utente univoci
Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 37 di 68.
Sfida
FacileCrea un sistema di registrazione degli username che impedisca i duplicati usando l’idioma Go per i set. Questa sfida mostra come creare un sistema robusto di gestione degli utenti che garantisca l’unicità degli username in tutte le registrazioni.
Riceverai due input:
- Una stringa contenente gli username esistenti separati da virgole (ad es.,
"alice123,bob_dev,charlie2024,diana_codes") - Una stringa contenente i tentativi di registrazione di nuovi username separati da virgole (ad es.,
"eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")
Il tuo compito è:
- Creare un set usando l’idioma Go
map[string]struct{}per memorizzare gli username registrati - Analizzare la prima stringa di input dividendola in corrispondenza delle virgole per ottenere gli username esistenti
- Aggiungere ogni username esistente al set usando il valore struct vuoto
{} - Analizzare la seconda stringa di input dividendola in corrispondenza delle virgole per ottenere i nuovi tentativi di registrazione
- Per ogni tentativo di registrazione, verificare se lo username è già presente nel set usando l’idioma comma ok
- Mostrare il processo di registrazione per ogni tentativo:
- Se lo username è disponibile:
"Registered: [username]"e aggiungerlo al set - Se lo username esiste già:
"Username taken: [username]"
- Se lo username è disponibile:
- Dopo aver elaborato tutti i tentativi di registrazione, mostrare un riepilogo completo:
"Registration Summary:""Initial usernames: [initial_count]""Registration attempts: [attempts_count]""Successful registrations: [successful_count]""Rejected (duplicate): [rejected_count]""Total registered usernames: [total_count]"
- Infine, elencare tutti gli username registrati nel sistema:
- Intestazione:
"All registered usernames:" - Ogni username su una riga separata:
"@[username]"
- Intestazione:
Usa il pacchetto strings per dividere le stringhe di input in corrispondenza delle virgole. Questa sfida mostra come l’idioma Go per i set offra una soluzione efficiente per impedire i duplicati nei sistemi di registrazione degli utenti, garantendo l’integrità dei dati e prestazioni rapide nelle ricerche per la convalida degli username.
Provalo tu
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
// Leggi l'input
var existingUsernames string
var newRegistrations string
fmt.Scanln(&existingUsernames)
fmt.Scanln(&newRegistrations)
// Analizza le stringhe di input
existing := strings.Split(existingUsernames, ",")
attempts := strings.Split(newRegistrations, ",")
// Crea un insieme secondo la convenzione di Go
userSet := make(map[string]struct{})
// TODO: Scrivi il tuo codice qui sotto
// 1. Aggiungi i nomi utente esistenti all'insieme
// 2. Elabora ogni tentativo di registrazione
// 3. Mostra il risultato di ogni tentativo di registrazione
// 4. Calcola e mostra il riepilogo
// 5. Elenca tutti i nomi utente registrati (ricorda di ordinarli per ottenere un output coerente)
}Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
Switch con `fallthrough`Uscire dai cicli annidatiContinuare un ciclo specificoL'istruzione `goto`Riepilogo - Controllo avanzato dei cicli4Progetto: semplice lista di attività
Configurazione del progettoAggiungere un’attività2Struct e metodi
Definire metodi sugli structReceiver per valoreReceiver con puntatoreScegliere i receiverMetodi vs funzioniRiepilogo - comportamento degli struct5Mappe in dettaglio
Mappe di structPuntatori come valori delle mappeVerificare le mappe nilConfrontare le mappeRiepilogo - Contatore della frequenza delle parole3Interfacce (le basi)
Che cos’è un’interfaccia?Definire un’interfacciaImplementare un’interfacciaUsare i tipi interfacciaInterfaccia vuotaAsserzioni di tipoSwitch di tipoRiepilogo: forme e comportamenti6Gli insiemi in Go idiomatico
L'idioma degli insiemi in GoCreare un insiemeAggiungere elementi a un insiemeVerificare l'appartenenzaRimuovere elementi da un insiemeIterare su un insiemeRiepilogo - Nomi utente univociEsercitati da solo: Compilatore Go online