Podsumowanie – unikalne nazwy użytkowników
Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 37 z 68.
Wyzwanie
ŁatwyZbuduj system rejestracji nazw użytkowników, który zapobiega duplikatom, wykorzystując idiom zbioru w Go. To wyzwanie pokazuje, jak utworzyć solidny system zarządzania użytkownikami, który zapewnia unikalność nazw użytkowników we wszystkich rejestracjach.
Otrzymasz dwa wejścia:
- Ciąg zawierający istniejące nazwy użytkowników oddzielone przecinkami (np.
"alice123,bob_dev,charlie2024,diana_codes") - Ciąg zawierający próby rejestracji nowych nazw użytkowników oddzielone przecinkami (np.
"eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")
Twoim zadaniem jest:
- Utworzyć zbiór przy użyciu idiomu Go
map[string]struct{}, aby przechowywać zarejestrowane nazwy użytkowników - Przeanalizować pierwszy ciąg wejściowy, dzieląc go po przecinkach, aby uzyskać istniejące nazwy użytkowników
- Dodać każdą istniejącą nazwę użytkownika do zbioru, używając pustego literału struktury
{}jako wartości - Przeanalizować drugi ciąg wejściowy, dzieląc go po przecinkach, aby uzyskać próby rejestracji nowych nazw użytkowników
- Dla każdej próby rejestracji sprawdzić, czy nazwa użytkownika już istnieje w zbiorze, używając idiomu comma ok
- Wyświetlić przebieg rejestracji dla każdej próby:
- Jeśli nazwa użytkownika jest dostępna:
"Registered: [username]"i dodać ją do zbioru - Jeśli nazwa użytkownika już istnieje:
"Username taken: [username]"
- Jeśli nazwa użytkownika jest dostępna:
- Po przetworzeniu wszystkich prób rejestracji wyświetlić pełne podsumowanie:
"Registration Summary:""Initial usernames: [initial_count]""Registration attempts: [attempts_count]""Successful registrations: [successful_count]""Rejected (duplicate): [rejected_count]""Total registered usernames: [total_count]"
- Na koniec wyświetlić wszystkie zarejestrowane w systemie nazwy użytkowników:
- Nagłówek:
"All registered usernames:" - Każda nazwa użytkownika w osobnym wierszu:
"@[username]"
- Nagłówek:
Użyj pakietu strings, aby podzielić ciągi wejściowe po przecinkach. To wyzwanie pokazuje, jak idiom zbioru w Go zapewnia wydajne rozwiązanie zapobiegające duplikatom w systemach rejestracji użytkowników, gwarantując integralność danych i szybkie wyszukiwanie podczas weryfikacji nazw użytkowników.
Spróbuj swoich sił
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
// Odczytaj dane wejściowe
var existingUsernames string
var newRegistrations string
fmt.Scanln(&existingUsernames)
fmt.Scanln(&newRegistrations)
// Przetwórz wejściowe ciągi znaków
existing := strings.Split(existingUsernames, ",")
attempts := strings.Split(newRegistrations, ",")
// Utwórz zbiór w sposób idiomatyczny dla Go
userSet := make(map[string]struct{})
// TODO: Napisz kod poniżej
// 1. Dodaj istniejące nazwy użytkowników do zbioru
// 2. Przetwórz każdą próbę rejestracji
// 3. Wyświetl wynik każdej próby rejestracji
// 4. Oblicz i wyświetl podsumowanie
// 5. Wypisz wszystkie zarejestrowane nazwy użytkowników (pamiętaj o sortowaniu, aby wyniki były zawsze w tej samej kolejności)
}Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowane sterowanie przepływem
Instrukcja switch z `fallthrough`Przerywanie zagnieżdżonych pętliKontynuowanie określonej pętliInstrukcja `goto`Podsumowanie — zaawansowane sterowanie pętlami4Projekt: Prosta lista zadań
Konfiguracja projektuDodawanie zadania2Struktury i metody
Definiowanie metod dla strukturOdbiorniki przez wartośćOdbiorniki przez wskaźnikWybór odbiornikówMetody a funkcjePodsumowanie — działanie struktur5Mapy w szczegółach
Mapy strukturWskaźniki jako wartości mapSprawdzanie, czy mapy są nilPorównywanie mapPodsumowanie — licznik częstości słów3Interfejsy (podstawy)
Czym jest interfejs?Definiowanie interfejsuImplementowanie interfejsuUżywanie typów interfejsowychPusty interfejsAsercje typuPrzełącznik typówPodsumowanie – kształty i zachowania6Idiomatyczny Go: zbiory
Idiom zbioru w GoTworzenie zbioruDodawanie elementów do zbioruSprawdzanie przynależnościUsuwanie elementów ze zbioruIterowanie po zbiorzePodsumowanie – unikalne nazwy użytkownikówPoćwicz samodzielnie: Kompilator Go online