Podstawowa lista kontaktów
Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 66 z 68.
Wyzwanie
ŁatwyUtwórz system zarządzania kontaktami, który pokazuje, jak struktury, wycinki i funkcje współpracują ze sobą, aby organizować i wyświetlać informacje o kontaktach. To wyzwanie sprawdzi Twoją umiejętność definiowania niestandardowych struktur danych, zarządzania zbiorami danych i implementowania funkcji do przetwarzania tych danych.
Otrzymasz dwa wejścia:
- Ciąg zawierający informacje o kontaktach w formacie
"name1:phone1:email1,name2:phone2:email2,name3:phone3:email3"(np."Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com") - Ciąg zawierający nowy kontakt do dodania w formacie
"name:phone:email"(np."David Wilson:555-0321:david@email.com")
Twoje zadanie:
- Zdefiniuj strukturę
Contactz trzema polami typu string:Name,PhoneiEmail - Utwórz funkcję o nazwie
addContact, która przyjmuje wycinek strukturContactoraz nowyContact, a następnie zwraca nowy wycinek z dodanym kontaktem - Utwórz funkcję o nazwie
displayContacts, która przyjmuje wycinek strukturContacti wyświetla informacje o każdym kontakcie - Przetwórz pierwsze wejście, dzieląc je po przecinkach, aby uzyskać poszczególne wpisy kontaktów
- Dla każdego wpisu kontaktu podziel go po dwukropkach, aby wyodrębnić imię i nazwisko, numer telefonu oraz adres e-mail
- Utwórz struktury
Contactz przetworzonych danych i przechowuj je w wycinku - Przetwórz drugie wejście, dzieląc je po dwukropkach, aby utworzyć nowy kontakt
- Wyświetl nagłówek aplikacji:
"=== CONTACT MANAGEMENT SYSTEM ===" - Wyświetl początkowe kontakty za pomocą funkcji
displayContactsz nagłówkiem:"Initial contact list:" - Wyświetl dodawany nowy kontakt:
"Adding new contact: [name] ([phone]) - [email]" - Użyj funkcji
addContact, aby dodać nowy kontakt do wycinka - Wyświetl zaktualizowane kontakty za pomocą funkcji
displayContactsz nagłówkiem:"Updated contact list:" - Wyświetl statystyki kontaktów:
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- Wyświetl komunikat o zakończeniu:
"Contact management operations completed successfully"
Funkcja displayContacts powinna wyświetlać każdy kontakt w formacie: "[index]. [name] - Phone: [phone], Email: [email]", gdzie indeks zaczyna się od 1.
Użyj pakietu strings, aby dzielić ciągi wejściowe, oraz pakietu fmt do formatowanego wyjścia. To wyzwanie pokazuje, jak łączyć struktury w celu organizacji danych, wycinki do przechowywania kolekcji oraz funkcje do organizacji kodu — podstawowe wzorce używane w programowaniu w Go.
Spróbuj swoich sił
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
// TODO: Zdefiniuj tutaj strukturę Contact
// TODO: Zaimplementuj tutaj funkcję addContact
// TODO: Zaimplementuj tutaj funkcję displayContacts
func main() {
// Odczytaj dane wejściowe za pomocą bufio.Scanner, aby poprawnie obsłużyć spacje w nazwach
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
contactsInput := scanner.Text()
scanner.Scan()
newContactInput := scanner.Text()
// TODO: Napisz swój kod poniżej
// Przeanalizuj dane wejściowe kontaktów i utwórz struktury Contact
// Pamiętaj, aby przed dostępem sprawdzić, czy wycinek parts zawiera wystarczającą liczbę elementów
// Przeanalizuj dane wejściowe nowego kontaktu
// Wyświetl nagłówek aplikacji
// Wyświetl początkową listę kontaktów
// Dodaj nowy kontakt
// Wyświetl zaktualizowaną listę kontaktów
// Wyświetl statystyki
// Wyświetl komunikat o zakończeniu
}Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowane sterowanie przepływem
Instrukcja switch z `fallthrough`Przerywanie zagnieżdżonych pętliKontynuowanie określonej pętliInstrukcja `goto`Podsumowanie — zaawansowane sterowanie pętlami4Projekt: Prosta lista zadań
Konfiguracja projektuDodawanie zadania2Struktury i metody
Definiowanie metod dla strukturOdbiorniki przez wartośćOdbiorniki przez wskaźnikWybór odbiornikówMetody a funkcjePodsumowanie — działanie struktur5Mapy w szczegółach
Mapy strukturWskaźniki jako wartości mapSprawdzanie, czy mapy są nilPorównywanie mapPodsumowanie — licznik częstości słów3Interfejsy (podstawy)
Czym jest interfejs?Definiowanie interfejsuImplementowanie interfejsuUżywanie typów interfejsowychPusty interfejsAsercje typuPrzełącznik typówPodsumowanie – kształty i zachowaniaPoćwicz samodzielnie: Kompilator Go online