Eine Aufgabe hinzufügen
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 21 von 68.
Aufgabe
EinfachAufbauend auf deiner Grundlage für die Aufgabenverwaltung implementierst du nun die Kernfunktionalität zum Hinzufügen neuer Aufgaben zu deinem System. Bei dieser Herausforderung geht es darum, eine Funktion zu erstellen, die deine Aufgabenliste erweitert, indem sie neue Aufgaben an den vorhandenen Slice anhängt.
Wichtiger Hinweis: Da Aufgabennamen Leerzeichen enthalten können (wie „Buy groceries“), musst du bufio.Scanner verwenden, um vollständige Eingabezeilen zu lesen. Die Funktion fmt.Scanln beendet das Lesen beim ersten Leerzeichen, wodurch Aufgabennamen mit Leerzeichen nicht funktionieren würden. Verwende bufio.NewScanner(os.Stdin) und rufe anschließend scanner.Scan() gefolgt von scanner.Text() auf, um vollständige Zeilen zu lesen.
Du erhältst zwei Eingaben:
- Eine Zeichenkette, die die Anzahl der vorhandenen Aufgaben darstellt (z. B.
"2") - Eine Zeichenkette mit durch Kommas getrennten Aufgabennamen (z. B.
"Buy groceries,Call dentist,Finish project")
Deine Aufgabe ist es:
- Dieselbe
Task-Struktur wie in der vorherigen Herausforderung zu definieren, mit den FeldernName(string) undCompleted(bool) - Eine Funktion namens
addTaskzu erstellen, die einen Slice ausTask-Strukturen und einen Aufgabennamen (string) als Parameter übernimmt - Die Funktion
addTasksoll einen neuen Slice mit der hinzugefügten Aufgabe zurückgeben (bei der neuen Aufgabe sollCompletedauffalsegesetzt sein) bufio.Scannerzu verwenden, um die Eingabezeilen korrekt zu lesen und Aufgabennamen mit Leerzeichen zu verarbeiten- Einen anfänglichen Aufgaben-Slice basierend auf der Anzahl der vorhandenen Aufgaben aus der ersten Eingabe zu erstellen:
- Wenn die Zahl
"0"ist, beginne mit einem leeren Slice - Wenn die Zahl größer als
"0"ist, erstelle entsprechend viele Platzhalteraufgaben mit Namen wie"Existing Task 1","Existing Task 2"usw., die alle als nicht abgeschlossen markiert sind
- Wenn die Zahl
- Die durch Kommas getrennten Aufgabennamen aus der zweiten Eingabe zu analysieren
- Deine Funktion
addTaskzu verwenden, um jede neue Aufgabe zum Slice hinzuzufügen - Jede Aufgabe im endgültigen Slice im Format
"Task: [name], Completed: [true/false]"auszugeben - Die Gesamtzahl der Aufgaben im Format
"Total tasks: [count]"auszugeben
Wenn du beispielsweise 1 vorhandene Aufgabe hast und "Buy groceries,Call dentist" hinzufügen möchtest, sollte deine Ausgabe zuerst die vorhandene Aufgabe, danach die beiden neuen Aufgaben und schließlich die Gesamtanzahl anzeigen. Diese Herausforderung übt die Bearbeitung von Slices mit der Funktion append und zeigt, wie du Funktionen erstellen kannst, die deine 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Übe selbstständig: Online-Go-Compiler