Özet - Benzersiz Kullanıcı Adları
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 37 / 68.
Görev
KolayGo set deyimini kullanarak yinelenen kullanıcı adlarını önleyen bir kullanıcı adı kayıt sistemi oluşturun. Bu görev, tüm kayıtlar genelinde kullanıcı adlarının benzersiz olmasını sağlayan sağlam bir kullanıcı yönetim sisteminin nasıl oluşturulacağını gösterir.
İki girdi alacaksınız:
- Virgüllerle ayrılmış mevcut kullanıcı adlarını içeren bir dize (ör.
"alice123,bob_dev,charlie2024,diana_codes") - Virgüllerle ayrılmış yeni kullanıcı adı kayıt denemelerini içeren bir dize (ör.
"eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")
Göreviniz:
- Kayıtlı kullanıcı adlarını depolamak için Go deyimi
map[string]struct{}kullanarak bir küme oluşturun - Mevcut kullanıcı adlarını elde etmek için ilk girdi dizesini virgüller üzerinden bölerek ayrıştırın
- Her mevcut kullanıcı adını, değer olarak boş struct literal'ı
{}kullanarak kümenize ekleyin - Yeni kayıt denemelerini elde etmek için ikinci girdi dizesini virgüller üzerinden bölerek ayrıştırın
- Her kayıt denemesi için, virgül ok deyimini kullanarak kullanıcı adının kümede zaten var olup olmadığını kontrol edin
- Her deneme için kayıt sürecini görüntüleyin:
- Kullanıcı adı kullanılabilir durumdaysa:
"Registered: [username]"ve kullanıcı adını kümeye ekleyin - Kullanıcı adı zaten varsa:
"Username taken: [username]"
- Kullanıcı adı kullanılabilir durumdaysa:
- Tüm kayıt denemelerini işledikten sonra kapsamlı bir özet görüntüleyin:
"Registration Summary:""Initial usernames: [initial_count]""Registration attempts: [attempts_count]""Successful registrations: [successful_count]""Rejected (duplicate): [rejected_count]""Total registered usernames: [total_count]"
- Son olarak, sistemde kayıtlı tüm kullanıcı adlarını listeleyin:
- Başlık:
"All registered usernames:" - Her kullanıcı adını ayrı bir satırda gösterin:
"@[username]"
- Başlık:
Girdi dizelerini virgüller üzerinden bölmek için strings paketini kullanın. Bu görev, Go set deyiminin kullanıcı adı kayıt sistemlerinde yinelenenleri önlemek için nasıl verimli bir çözüm sağladığını; kullanıcı adı doğrulaması için hızlı arama performansı sunarken veri bütünlüğünü nasıl koruduğunu gösterir.
Kendin dene
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
// Girdiyi oku
var existingUsernames string
var newRegistrations string
fmt.Scanln(&existingUsernames)
fmt.Scanln(&newRegistrations)
// Girdi dizelerini ayrıştır
existing := strings.Split(existingUsernames, ",")
attempts := strings.Split(newRegistrations, ",")
// Go deyimine uygun küme oluştur
userSet := make(map[string]struct{})
// TODO: Kodunuzu aşağıya yazın
// 1. Mevcut kullanıcı adlarını kümeye ekleyin
// 2. Her bir kayıt denemesini işleyin
// 3. Her deneme için kayıt sonuçlarını görüntüleyin
// 4. Özeti hesaplayın ve görüntüleyin
// 5. Tüm kayıtlı kullanıcı adlarını listeleyin (tutarlı çıktı için sıralamayı unutmayın)
}Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Kontrol Akışı
`fallthrough` ile Switchİç İçe Döngülerden ÇıkmaBelirli Bir Döngüye Devam Etme`goto` İfadesiÖzet - İleri Seviye Döngü Kontrolü4Proje: Basit Görev Listesi
Proje KurulumuGörev Ekleme2Structlar ve Metotlar
Structlarda Metot TanımlamaValue Receiver'larPointer Receiver'larReceiver SeçimiMetotlar ve FonksiyonlarÖzet - Struct Davranışı5Derinlemesine Map'ler
Struct Map'leriMap Değeri Olarak Pointer'larNil Map KontrolüMap'leri KarşılaştırmaÖzet - Kelime Frekansı Sayacı3Arayüzler (Temeller)
Arayüz Nedir?Bir Arayüz TanımlamaBir Arayüzü UygulamaArayüz Tiplerini KullanmaBoş ArayüzTip OnaylamalarıTip SeçimiÖzet - Şekiller ve Davranışlar6Deyimsel Go: Kümeler
Go'da Küme DeyimiBir Küme OluşturmaKümeye Eleman EklemeEleman Varlığını Kontrol EtmeKümeden Eleman SilmeKüme Üzerinde YinelemeÖzet - Benzersiz Kullanıcı AdlarıKendi başına pratik yap: Online Go derleyicisi