Alle Aufgaben anzeigen
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 22 von 68.
Aufgabe
EinfachDu setzt dein Aufgabenverwaltungssystem fort und implementierst nun die Funktionalität, um alle Aufgaben in einem benutzerfreundlichen Format anzuzeigen. Diese Herausforderung konzentriert sich darauf, deine Aufgabensammlung zu durchlaufen und jede Aufgabe mit ihrem Erledigungsstatus mithilfe klarer visueller Indikatoren darzustellen.
Du erhältst zwei Eingaben:
- Eine Zeichenkette, die die Anzahl der Aufgaben darstellt (z. B.
"4") - Eine Zeichenkette mit Aufgabedaten im Format:
"name1:status1,name2:status2,name3:status3", wobei der Status entweder"true"oder"false"ist (z. B."Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")
Deine Aufgabe ist es:
- Dieselbe
Task-Struktur wie in den vorherigen Herausforderungen zu definieren, mit den FeldernName(string) undCompleted(bool) - Eine Funktion namens
viewAllTaskszu erstellen, die als Parameter ein Slice ausTask-Strukturen entgegennimmt - Innerhalb der Funktion
viewAllTasksdas Slice zu durchlaufen und jede Aufgabe im folgenden Format auszugeben:- Für erledigte Aufgaben:
"[x] [task_name]" - Für unerledigte Aufgaben:
"[ ] [task_name]"
- Für erledigte Aufgaben:
- Die Aufgabedaten aus der zweiten Eingabe zu verarbeiten, um dein Aufgaben-Slice zu erstellen:
- Die Eingabe an den Kommas zu teilen, um einzelne Aufgabeneinträge zu erhalten
- Jeden Eintrag am Doppelpunkt zu teilen, um Name und Status voneinander zu trennen
- Die Status-Zeichenkette in einen booleschen Wert umzuwandeln (
"true"wird zutrue,"false"wird zufalse)
- Deine Funktion
viewAllTasksmit dem erstellten Slice aufzurufen - Nach der Anzeige aller Aufgaben eine Zusammenfassung im folgenden Format auszugeben:
"Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
Wenn du beispielsweise die Aufgaben "Buy groceries:false,Call dentist:true,Finish project:false" hast, sollte deine Ausgabe jede Aufgabe mit den entsprechenden Kontrollkästchen anzeigen und anschließend die Zusammenfassung mit der Gesamtanzahl sowie den Erledigungsstatistiken darstellen. Diese Herausforderung übt das Durchlaufen von Slices und die bedingte Formatierung mit if-Anweisungen und bietet den Benutzern eine klare Übersicht über den Fortschritt ihrer Aufgaben.
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Übe selbstständig: Online-Go-Compiler