Eine Aufgabe hinzufügen
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 21 von 68.
Aufgabe
EinfachAufbauend auf Ihrem Aufgabenmanagement-Fundament werden Sie nun die Kernfunktionalität implementieren, um neue Aufgaben zu Ihrem System hinzuzufügen. Diese Herausforderung konzentriert sich auf das Erstellen einer Funktion, die Ihre Aufgabenliste erweitert, indem sie neue Aufgaben an den bestehenden Slice anhängt.
Wichtiger Hinweis: Da Aufgabennamen Leerzeichen enthalten können (wie "Buy groceries"), müssen Sie bufio.Scanner verwenden, um ganze Eingabezeilen zu lesen. Die Funktion fmt.Scanln stoppt das Lesen beim ersten Leerzeichen, was Aufgabennamen mit Leerzeichen unterbrechen würde. Verwenden Sie bufio.NewScanner(os.Stdin) und rufen Sie scanner.Scan() gefolgt von scanner.Text() auf, um vollständige Zeilen zu lesen.
Sie erhalten zwei Eingaben:
- Einen String, der die Anzahl der vorhandenen Aufgaben darstellt (z. B.
"2") - Einen String, der Aufgabennamen enthält, die durch Kommas getrennt sind (z. B.
"Buy groceries,Call dentist,Finish project")
Ihre Aufgabe ist es:
- Definieren Sie dieselbe
Task-Struktur aus der vorherigen Herausforderung mit den FeldernName(string) undCompleted(bool) - Erstellen Sie eine Funktion namens
addTask, die einen Slice vonTask-Strukturen und einen Aufgabennamen (string) als Parameter entgegennimmt - Die Funktion
addTasksollte einen neuen Slice mit der hinzugefügten Aufgabe zurückgeben (die neue Aufgabe sollteCompletedauffalsegesetzt haben) - Verwenden Sie
bufio.Scanner, um die Eingabezeilen korrekt zu lesen, um Aufgabennamen mit Leerzeichen zu verarbeiten - Erstellen Sie einen initialen Slice von Aufgaben basierend auf der Anzahl der im ersten Input angegebenen vorhandenen Aufgaben:
- Wenn die Anzahl
"0"ist, beginnen Sie mit einem leeren Slice - Wenn die Anzahl größer als
"0"ist, erstellen Sie entsprechend viele Platzhalter-Aufgaben mit Namen wie"Existing Task 1","Existing Task 2"usw., alle als unvollständig markiert
- Wenn die Anzahl
- Analysieren Sie die kommagetrennten Aufgabennamen aus der zweiten Eingabe
- Verwenden Sie Ihre
addTask-Funktion, um jede neue Aufgabe zum Slice hinzuzufügen - Geben Sie jede Aufgabe im finalen Slice im Format
"Task: [name], Completed: [true/false]"aus - Geben Sie die Gesamtzahl der Aufgaben im Format
"Total tasks: [count]"aus
Wenn Sie beispielsweise 1 vorhandene Aufgabe haben und "Buy groceries,Call dentist" hinzufügen möchten, sollte Ihre Ausgabe zuerst die vorhandene Aufgabe zeigen, gefolgt von den zwei neuen Aufgaben und schließlich die Gesamtzahl. Diese Herausforderung übt die Slice-Manipulation mit der append-Funktion und demonstriert, wie man Funktionalitäten aufbaut, die Ihre Datenstrukturen erweitern.
Probier es selbst
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
// TODO: addTask-Funktion hier erstellen
func main() {
// Scanner zum Lesen von Eingabezeilen erstellen
scanner := bufio.NewScanner(os.Stdin)
// Anzahl der vorhandenen Aufgaben lesen
scanner.Scan()
existingTasksStr := scanner.Text()
// Aufgabennamen lesen
scanner.Scan()
taskNamesStr := scanner.Text()
// TODO: Implementierung vervollständigen
// 1. existingTasksStr in Ganzzahl umwandeln
// 2. Initialen Slice mit vorhandenen Aufgaben erstellen
// 3. taskNamesStr parsen und neue Aufgaben hinzufügen
// 4. Alle Aufgaben und Gesamtzahl ausgeben
}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