Einfache Kontaktliste
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 66 von 68.
Aufgabe
EinfachErstellen Sie ein Kontaktverwaltungssystem, das zeigt, wie Structs, Slices und Funktionen zusammenarbeiten, um Kontaktinformationen zu organisieren und anzuzeigen. Diese Herausforderung testet Ihre Fähigkeit, benutzerdefinierte Datenstrukturen zu definieren, Datensammlungen zu verwalten und Funktionen zur Manipulation dieser Daten zu implementieren.
Sie erhalten zwei Eingaben:
- Einen String, der Kontaktinformationen im Format
"name1:phone1:email1,name2:phone2:email2,name3:phone3:email3"enthält (z. B."Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com") - Einen String, der einen neuen hinzuzufügenden Kontakt im Format
"name:phone:email"enthält (z. B."David Wilson:555-0321:david@email.com")
Ihre Aufgabe ist es:
- Definieren Sie ein
ContactStruct mit drei String-Feldern:Name,PhoneundEmail - Erstellen Sie eine Funktion namens
addContact, die ein Slice vonContactStructs und einen neuenContactentgegennimmt und dann ein neues Slice mit dem hinzugefügten Kontakt zurückgibt - Erstellen Sie eine Funktion namens
displayContacts, die ein Slice vonContactStructs entgegennimmt und die Informationen jedes Kontakts ausgibt - Verarbeiten Sie die erste Eingabe, indem Sie sie an den Kommas aufteilen, um einzelne Kontakteinträge zu erhalten
- Teilen Sie jeden Kontakteintrag an den Doppelpunkten auf, um Name, Telefon und E-Mail zu extrahieren
- Erstellen Sie
ContactStructs aus den verarbeiteten Daten und speichern Sie diese in einem Slice - Verarbeiten Sie die zweite Eingabe, indem Sie sie an den Doppelpunkten aufteilen, um einen neuen Kontakt zu erstellen
- Geben Sie den Anwendungs-Header aus:
"=== CONTACT MANAGEMENT SYSTEM ===" - Geben Sie die ursprünglichen Kontakte mit Ihrer
displayContacts-Funktion und dem Header"Initial contact list:"aus - Geben Sie den neu hinzugefügten Kontakt aus:
"Adding new contact: [name] ([phone]) - [email]" - Verwenden Sie Ihre
addContact-Funktion, um den neuen Kontakt zum Slice hinzuzufügen - Geben Sie die aktualisierten Kontakte mit Ihrer
displayContacts-Funktion und dem Header"Updated contact list:"aus - Geben Sie Kontaktstatistiken aus:
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- Geben Sie die Abschlussmeldung aus:
"Contact management operations completed successfully"
Die Funktion displayContacts sollte jeden Kontakt im Format "[index]. [name] - Phone: [phone], Email: [email]" ausgeben, wobei der Index bei 1 beginnt.
Verwenden Sie das strings-Paket, um Eingabestrings aufzuteilen, und das fmt-Paket für die formatierte Ausgabe. Diese Herausforderung zeigt, wie man Structs zur Datenorganisation, Slices für Sammlungen und Funktionen zur Codeorganisation kombiniert – grundlegende Muster, die in der gesamten Go-Programmierung verwendet werden.
Probier es selbst
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
// TODO: Definieren Sie hier Ihre Contact-Struktur
// TODO: Implementieren Sie hier die Funktion addContact
// TODO: Implementieren Sie hier die Funktion displayContacts
func main() {
// Eingabe mit bufio.Scanner lesen, um Leerzeichen in Namen korrekt zu verarbeiten
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
contactsInput := scanner.Text()
scanner.Scan()
newContactInput := scanner.Text()
// TODO: Schreiben Sie Ihren Code unten
// Verarbeiten Sie die Kontakteingabe und erstellen Sie Contact-Strukturen
// Denken Sie daran zu prüfen, ob der Parts-Slice genügend Elemente hat, bevor Sie darauf zugreifen
// Verarbeiten Sie die Eingabe des neuen Kontakts
// Anwendungskopf anzeigen
// Anfängliche Kontakte anzeigen
// Den neuen Kontakt hinzufügen
// Aktualisierte Kontakte anzeigen
// Statistiken anzeigen
// Abschlussmeldung anzeigen
}Alle Lektionen in Logik & Ablauf
1Fortgeschrittener Kontrollfluss
Switch mit `fallthrough`Abbrechen von verschachtelten SchleifenFortsetzen einer bestimmten SchleifeDie `goto`-AnweisungZusammenfassung – Fortgeschrittene Schleifensteuerung4Projekt: Einfache Aufgabenliste
Projekt-SetupEine Aufgabe hinzufügen2Structs und Methoden
Methoden für Structs definierenValue ReceiverPointer ReceiverReceiver auswählenMethoden vs. FunktionenZusammenfassung – Struct-Verhalten5Maps im Detail
Maps von StructsPointer als Map-WertePrüfen auf Nil-MapsMaps vergleichenZusammenfassung – Wortfrequenz-Zähler8Projekt: Einfache Bestandsverwaltung
ProjektübersichtLagerbestand prüfen11Abschlussherausforderungen
Einfache KontaktlisteEinfacher Zahlen-ValidatorSammler für eindeutige Elemente3Interfaces (Die Grundlagen)
Was ist ein Interface?Ein Interface definierenEin Interface implementierenInterface-Typen verwendenLeeres InterfaceType AssertionsType SwitchZusammenfassung – Formen und Verhalten