Ulasan: Nama pengguna unik
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 37 dari 68.
Tantangan
MudahBuat sistem pendaftaran nama pengguna yang mencegah nama pengguna duplikat dengan idiom set Go. Tantangan ini menunjukkan cara membuat sistem pengelolaan pengguna yang tangguh dan memastikan keunikan nama pengguna pada semua pendaftaran.
Kamu akan menerima dua input:
- Sebuah string yang berisi nama pengguna yang sudah ada, dipisahkan dengan koma (misalnya,
"alice123,bob_dev,charlie2024,diana_codes") - Sebuah string yang berisi upaya pendaftaran nama pengguna baru, dipisahkan dengan koma (misalnya,
"eve_user,alice123,frank_dev,bob_dev,grace2024,alice123")
Tugasmu adalah:
- Buat set menggunakan idiom Go
map[string]struct{}untuk menyimpan nama pengguna yang terdaftar - Urai string input pertama dengan memisahkannya berdasarkan koma untuk mendapatkan nama pengguna yang sudah ada
- Tambahkan setiap nama pengguna yang sudah ada ke set menggunakan literal struct kosong
{}sebagai nilainya - Urai string input kedua dengan memisahkannya berdasarkan koma untuk mendapatkan upaya pendaftaran baru
- Untuk setiap upaya pendaftaran, periksa apakah nama pengguna sudah ada di set menggunakan idiom comma ok
- Tampilkan proses pendaftaran untuk setiap upaya:
- Jika nama pengguna tersedia:
"Registered: [username]"dan tambahkan ke set - Jika nama pengguna sudah ada:
"Username taken: [username]"
- Jika nama pengguna tersedia:
- Setelah memproses semua upaya pendaftaran, tampilkan ringkasan lengkap:
"Registration Summary:""Initial usernames: [initial_count]""Registration attempts: [attempts_count]""Successful registrations: [successful_count]""Rejected (duplicate): [rejected_count]""Total registered usernames: [total_count]"
- Terakhir, tampilkan daftar semua nama pengguna yang terdaftar di sistem:
- Header:
"All registered usernames:" - Setiap nama pengguna pada baris terpisah:
"@[username]"
- Header:
Gunakan package strings untuk memisahkan string input berdasarkan koma. Tantangan ini menunjukkan cara idiom set Go menyediakan solusi yang efisien untuk mencegah duplikat dalam sistem pendaftaran pengguna, menjaga integritas data sekaligus memberikan kinerja pencarian yang cepat untuk validasi nama pengguna.
Coba sendiri
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
// Baca input
var existingUsernames string
var newRegistrations string
fmt.Scanln(&existingUsernames)
fmt.Scanln(&newRegistrations)
// Uraikan string input
existing := strings.Split(existingUsernames, ",")
attempts := strings.Split(newRegistrations, ",")
// Buat set dengan cara yang lazim di Go
userSet := make(map[string]struct{})
// TODO: Tulis kodemu di bawah ini
// 1. Tambahkan nama pengguna yang sudah ada ke set
// 2. Proses setiap percobaan pendaftaran
// 3. Tampilkan hasil pendaftaran untuk setiap percobaan
// 4. Hitung dan tampilkan ringkasannya
// 5. Tampilkan semua nama pengguna yang terdaftar (ingat untuk mengurutkannya agar output konsisten)
}Semua pelajaran di Logika & Alur
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan Perilaku6Go Idiomatis: set
Idiom set dalam GoMembuat setMenambahkan elemen ke setMemeriksa keanggotaanMenghapus elemen dari setMelakukan perulangan pada setUlasan: Nama pengguna unikLatihan sendiri: Compiler Go online