Einfache Kontaktliste
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 66 von 68.
Aufgabe
EinfachErstelle ein Kontaktverwaltungssystem, das zeigt, wie Strukturen, Slices und Funktionen zusammenarbeiten, um Kontaktinformationen zu organisieren und anzuzeigen. Diese Herausforderung testet deine Fähigkeit, benutzerdefinierte Datenstrukturen zu definieren, Datensammlungen zu verwalten und Funktionen zu implementieren, um diese Daten zu bearbeiten.
Du erhältst zwei Eingaben:
- Eine Zeichenkette mit Kontaktinformationen im Format
"name1:phone1:email1,name2:phone2:email2,name3:phone3:email3"(z. B."Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com") - Eine Zeichenkette mit einem neuen Kontakt, der im Format
"name:phone:email"hinzugefügt werden soll (z. B."David Wilson:555-0321:david@email.com")
Deine Aufgabe ist:
- Definiere eine
Contact-Struktur mit drei Zeichenkettenfeldern:Name,PhoneundEmail - Erstelle eine Funktion namens
addContact, die einen Slice vonContact-Strukturen und einen neuenContactübernimmt und anschließend einen neuen Slice mit dem hinzugefügten Kontakt zurückgibt - Erstelle eine Funktion namens
displayContacts, die einen Slice vonContact-Strukturen übernimmt und die Informationen zu jedem Kontakt ausgibt - Verarbeite die erste Eingabe, indem du sie an Kommas trennst, um einzelne Kontakteinträge zu erhalten
- Trenne jeden Kontakteintrag an den Doppelpunkten, um Name, Telefonnummer und E-Mail-Adresse zu extrahieren
- Erstelle aus den verarbeiteten Daten
Contact-Strukturen und speichere sie in einem Slice - Verarbeite die zweite Eingabe, indem du sie an den Doppelpunkten trennst, um einen neuen Kontakt zu erstellen
- Gib die Kopfzeile der Anwendung aus:
"=== CONTACT MANAGEMENT SYSTEM ===" - Gib die anfänglichen Kontakte mithilfe deiner Funktion
displayContactsmit der Kopfzeile"Initial contact list:"aus - Gib den hinzuzufügenden neuen Kontakt aus:
"Adding new contact: [name] ([phone]) - [email]" - Verwende deine Funktion
addContact, um den neuen Kontakt zum Slice hinzuzufügen - Gib die aktualisierten Kontakte mithilfe deiner Funktion
displayContactsmit der Kopfzeile"Updated contact list:"aus - Gib die Kontaktstatistiken aus:
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- Gib die Abschlussmeldung aus:
"Contact management operations completed successfully"
Die Funktion displayContacts soll jeden Kontakt im Format "[index]. [name] - Phone: [phone], Email: [email]" ausgeben, wobei der Index bei 1 beginnt.
Verwende das Paket strings, um Eingabezeichenketten zu trennen, und das Paket fmt für formatierte Ausgaben. Diese Herausforderung zeigt, wie man Strukturen zur Organisation von Daten, Slices für Sammlungen und Funktionen zur Strukturierung des Codes 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Übe selbstständig: Online-Go-Compiler