Alle Aufgaben anzeigen
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 22 von 68.
Aufgabe
EinfachIn Fortsetzung Ihres Aufgabenverwaltungssystems werden Sie nun die Funktionalität implementieren, um alle Aufgaben in einem benutzerfreundlichen Format anzuzeigen. Diese Herausforderung konzentriert sich darauf, Ihre Aufgabensammlung zu durchlaufen und jede Aufgabe mit ihrem Erledigungsstatus unter Verwendung klarer visueller Indikatoren darzustellen.
Sie erhalten zwei Eingaben:
- Einen String, der die Anzahl der Aufgaben darstellt (z. B.
"4") - Einen String, der Aufgabendaten im Format
"name1:status1,name2:status2,name3:status3"enthält, wobei der Status entweder"true"oder"false"ist (z. B."Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")
Ihre Aufgabe ist es:
- Definieren Sie dieselbe
Task-Struktur aus den vorherigen Herausforderungen mit den FeldernName(string) undCompleted(bool) - Erstellen Sie eine Funktion namens
viewAllTasks, die ein Slice vonTask-Strukturen als Parameter entgegennimmt - Iterieren Sie innerhalb der Funktion
viewAllTasksdurch das Slice und geben Sie jede Aufgabe im folgenden Format aus:- Für erledigte Aufgaben:
"[x] [task_name]" - Für unvollständige Aufgaben:
"[ ] [task_name]"
- Für erledigte Aufgaben:
- Analysieren (parsen) Sie die Aufgabendaten aus der zweiten Eingabe, um Ihr Slice von Aufgaben zu erstellen:
- Trennen Sie die Eingabe durch Kommas, um die einzelnen Aufgabeneinträge zu erhalten
- Trennen Sie jeden Eintrag durch einen Doppelpunkt, um Name und Status zu trennen
- Konvertieren Sie den Status-String in einen booleschen Wert (
"true"wird zutrue,"false"wird zufalse)
- Rufen Sie Ihre Funktion
viewAllTasksmit dem erstellten Slice auf - Geben Sie nach der Anzeige aller Aufgaben eine Zusammenfassung im Format
"Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"aus
Wenn Sie beispielsweise die Aufgaben "Buy groceries:false,Call dentist:true,Finish project:false" haben, sollte Ihre Ausgabe jede Aufgabe mit den entsprechenden Kontrollkästchen anzeigen und anschließend die Zusammenfassung mit der Gesamtzahl und den Erledigungsstatistiken ausgeben. Diese Herausforderung übt die Iteration über Slices, die bedingte Formatierung mit if-Anweisungen und bietet den Benutzern einen klaren Überblick über ihren Aufgabenfortschritt.
Probier es selbst
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
func viewAllTasks(tasks []Task) {
// TODO: Implementiere die Funktion, um alle Aufgaben anzuzeigen
// Für abgeschlossene Aufgaben: "[x] [task_name]"
// Für unvollständige Aufgaben: "[ ] [task_name]"
}
func main() {
var numTasksStr string
fmt.Scanln(&numTasksStr)
numTasks, _ := strconv.Atoi(numTasksStr)
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
taskData := scanner.Text()
var tasks []Task
// TODO: Analysiere die Aufgabendaten aus dem taskData-String
// Nach Kommas trennen, um einzelne Aufgabeneinträge zu erhalten
taskEntries := strings.Split(taskData, ",")
_ = taskEntries
// Für jeden Eintrag nach Doppelpunkt trennen, um Name und Status zu unterscheiden
// Status-String in Boolean umwandeln und Task-Structs erstellen
// TODO: Rufe die Funktion viewAllTasks mit dem erstellten Slice auf
// TODO: Zusammenfassung berechnen und ausgeben
// Format: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
_ = tasks
_ = numTasks
}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