Menu
Coddy logo textTech

Zusammenfassung – Eindeutige Benutzernamen

Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 37 von 68.

challenge icon

Aufgabe

Einfach

Erstelle ein Benutzernamen-Registrierungssystem, das doppelte Benutzernamen mithilfe des Go-Set-Idioms verhindert. Diese Aufgabe zeigt, wie man ein robustes Benutzerverwaltungssystem erstellt, das die Eindeutigkeit von Benutzernamen bei allen Registrierungen sicherstellt.

Du erhältst zwei Eingaben:

  • Eine Zeichenkette mit vorhandenen Benutzernamen, die durch Kommas getrennt sind (z. B. "alice123,bob_dev,charlie2024,diana_codes")
  • Eine Zeichenkette mit neuen Registrierungsversuchen für Benutzernamen, die durch Kommas getrennt sind (z. B. "eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")

Deine Aufgabe ist es:

  1. Erstelle mithilfe des Go-Idioms map[string]struct{} ein Set, in dem registrierte Benutzernamen gespeichert werden
  2. Analysiere die erste Eingabezeichenkette, indem du sie an Kommas aufteilst, um die vorhandenen Benutzernamen zu erhalten
  3. Füge jeden vorhandenen Benutzernamen mithilfe des leeren Struct-Literals {} als Wert zu deinem Set hinzu
  4. Analysiere die zweite Eingabezeichenkette, indem du sie an Kommas aufteilst, um neue Registrierungsversuche zu erhalten
  5. Prüfe für jeden Registrierungsversuch mithilfe des Komma-ok-Idioms, ob der Benutzername bereits im Set vorhanden ist
  6. Zeige den Registrierungsprozess für jeden Versuch an:
    • Wenn der Benutzername verfügbar ist: "Registered: [username]" und füge ihn zum Set hinzu
    • Wenn der Benutzername bereits vorhanden ist: "Username taken: [username]"
  7. Zeige nach der Verarbeitung aller Registrierungsversuche eine umfassende Zusammenfassung an:
    • "Registration Summary:"
    • "Initial usernames: [initial_count]"
    • "Registration attempts: [attempts_count]"
    • "Successful registrations: [successful_count]"
    • "Rejected (duplicate): [rejected_count]"
    • "Total registered usernames: [total_count]"
  8. Liste schließlich alle im System registrierten Benutzernamen auf:
    • Überschrift: "All registered usernames:"
    • Jeder Benutzername in einer eigenen Zeile: "@[username]"

Verwende das Paket strings, um die Eingabezeichenketten an Kommas aufzuteilen. Diese Aufgabe zeigt, wie das Go-Set-Idiom eine effiziente Lösung zur Vermeidung von Duplikaten in Benutzerregistrierungssystemen bietet, die Datenintegrität sicherstellt und gleichzeitig eine schnelle Suchleistung bei der Validierung von Benutzernamen ermöglicht.

Probier es selbst

package main

import (
	"fmt"
	"sort"
	"strings"
)

func main() {
	// Eingabe lesen
	var existingUsernames string
	var newRegistrations string
	fmt.Scanln(&existingUsernames)
	fmt.Scanln(&newRegistrations)
	
	// Eingabestrings parsen
	existing := strings.Split(existingUsernames, ",")
	attempts := strings.Split(newRegistrations, ",")
	
	// Set mit Go-Idiom erstellen
	userSet := make(map[string]struct{})
	
	// TODO: Schreiben Sie Ihren Code unten
	// 1. Bestehende Benutzernamen zum Set hinzufügen
	// 2. Jeden Registrierungsversuch verarbeiten
	// 3. Registrierungsergebnisse für jeden Versuch anzeigen
	// 4. Zusammenfassung berechnen und anzeigen
	// 5. Alle registrierten Benutzernamen auflisten (Sortierung für konsistente Ausgabe nicht vergessen)
	
}

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Go-Compiler