Ö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.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Görev
KolayGo set deyimini kullanarak yinelenen kullanıcı adlarını önleyen bir kullanıcı adı kayıt sistemi oluşturun. Bu meydan okuma, tüm kayıtlar genelinde kullanıcı adı benzersizliğini sağlayan sağlam bir kullanıcı yönetim sisteminin nasıl oluşturulacağını gösterir.
İki girdi alacaksınız:
- Virgülle ayrılmış mevcut kullanıcı adlarını içeren bir dize (örneğin,
"alice123,bob_dev,charlie2024,diana_codes") - Virgülle ayrılmış yeni kullanıcı adı kayıt denemelerini içeren bir dize (örneğin,
"eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")
Göreviniz şunları yapmaktır:
- Kayıtlı kullanıcı adlarını saklamak için Go deyimi olan
map[string]struct{}yapısını kullanarak bir küme (set) oluşturun - Mevcut kullanıcı adlarını almak için ilk girdi dizesini virgüllere göre ayırarak ayrıştırın
- Değer olarak boş struct literal
{}kullanarak her bir mevcut kullanıcı adını kümenize ekleyin - Yeni kayıt denemelerini almak için ikinci girdi dizesini virgüllere göre ayırarak ayrıştırın
- Her kayıt denemesi için, comma 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ı müsaitse:
"Registered: [username]"yazdırın ve kümeye ekleyin - Kullanıcı adı zaten varsa:
"Username taken: [username]"yazdırın
- Kullanıcı adı müsaitse:
- 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, sistemdeki tüm kayıtlı kullanıcı adlarını listeleyin:
- Başlık:
"All registered usernames:" - Her kullanıcı adı ayrı bir satırda:
"@[username]"
- Başlık:
Girdi dizelerini virgüllere göre ayırmak için strings paketini kullanın. Bu meydan okuma, Go set deyiminin kullanıcı kayıt sistemlerinde yinelenenleri önlemek için nasıl verimli bir çözüm sunduğunu, veri bütünlüğünü sağlarken kullanıcı adı doğrulama için nasıl hızlı arama performansı sağladığını 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ı