Menu
Coddy logo textTech

Ö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.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

Go 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:

  1. 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
  2. Mevcut kullanıcı adlarını almak için ilk girdi dizesini virgüllere göre ayırarak ayrıştırın
  3. Değer olarak boş struct literal {} kullanarak her bir mevcut kullanıcı adını kümenize ekleyin
  4. Yeni kayıt denemelerini almak için ikinci girdi dizesini virgüllere göre ayırarak ayrıştırın
  5. Her kayıt denemesi için, comma ok deyimini kullanarak kullanıcı adının kümede zaten var olup olmadığını kontrol edin
  6. 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
  7. 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]"
  8. 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]"

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