Temel Kişi Listesi
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 66 / 68.
Görev
Kolayİletişim bilgilerini düzenlemek ve görüntülemek için struct'ların, slice'ların ve fonksiyonların nasıl birlikte çalıştığını gösteren bir kişi yönetim sistemi oluşturun. Bu meydan okuma, özel veri yapıları tanımlama, veri koleksiyonlarını yönetme ve bu verileri işlemek için fonksiyonlar uygulama yeteneğinizi test edecektir.
İki girdi alacaksınız:
"name1:phone1:email1,name2:phone2:email2,name3:phone3:email3"formatında iletişim bilgilerini içeren bir dize (örneğin,"Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com")"name:phone:email"formatında eklenecek yeni bir kişiyi içeren bir dize (örneğin,"David Wilson:555-0321:david@email.com")
Göreviniz şunları yapmaktır:
- Üç dize alanına sahip bir
Contactstruct'ı tanımlayın:Name,PhoneveEmail - Bir
Contactstruct slice'ı ve yeni birContactalan, ardından kişinin eklendiği yeni bir slice döndürenaddContactadında bir fonksiyon oluşturun - Bir
Contactstruct slice'ı alan ve her bir kişinin bilgisini yazdırandisplayContactsadında bir fonksiyon oluşturun - Bireysel kişi girişlerini elde etmek için ilk girdiyi virgüllere göre ayırarak ayrıştırın
- Her kişi girişi için isim, telefon ve e-postayı çıkarmak üzere iki nokta üst üste işaretine göre ayırın
- Ayrıştırılan verilerden
Contactstruct'ları oluşturun ve bunları bir slice içinde saklayın - Yeni bir kişi oluşturmak için ikinci girdiyi iki nokta üst üste işaretine göre ayırarak ayrıştırın
- Uygulama başlığını görüntüleyin:
"=== CONTACT MANAGEMENT SYSTEM ===" displayContactsfonksiyonunuzu kullanarak"Initial contact list:"başlığıyla başlangıçtaki kişileri görüntüleyin- Eklenen yeni kişiyi görüntüleyin:
"Adding new contact: [name] ([phone]) - [email]" - Yeni kişiyi slice'a eklemek için
addContactfonksiyonunuzu kullanın displayContactsfonksiyonunuzu kullanarak"Updated contact list:"başlığıyla güncellenmiş kişileri görüntüleyin- Kişi istatistiklerini görüntüleyin:
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- Tamamlanma mesajını görüntüleyin:
"Contact management operations completed successfully"
displayContacts fonksiyonu her kişiyi şu formatta yazdırmalıdır: "[index]. [name] - Phone: [phone], Email: [email]" (burada dizin 1'den başlar).
Girdi dizelerini ayırmak için strings paketini ve formatlı çıktı için fmt paketini kullanın. Bu meydan okuma, veri organizasyonu için struct'ları, koleksiyonlar için slice'ları ve kod organizasyonu için fonksiyonları nasıl birleştireceğinizi gösterir - bunlar Go programlamasında yaygın olarak kullanılan temel kalıplardır.
Kendin dene
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
// TODO: Kişi (Contact) yapınızı burada tanımlayın
// TODO: addContact fonksiyonunu burada uygulayın
// TODO: displayContacts fonksiyonunu burada uygulayın
func main() {
// İsimlerdeki boşlukları düzgün işlemek için bufio.Scanner kullanarak girdiyi okuyun
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
contactsInput := scanner.Text()
scanner.Scan()
newContactInput := scanner.Text()
// TODO: Kodunuzu aşağıya yazın
// Kişi girdisini ayrıştırın ve Contact yapılarını oluşturun
// Erişmeden önce dilim (slice) parçalarının yeterli elemana sahip olup olmadığını kontrol etmeyi unutmayın
// Yeni kişi girdisini ayrıştırın
// Uygulama başlığını görüntüleyin
// Başlangıçtaki kişileri görüntüleyin
// Yeni kişiyi ekleyin
// Güncellenmiş kişileri görüntüleyin
// İstatistikleri görüntüleyin
// Tamamlanma mesajını görüntüleyin
}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ışlar