Menu
Coddy logo textTech

Alle Aufgaben anzeigen

Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 22 von 68.

challenge icon

Aufgabe

Einfach

In 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:

  1. Definieren Sie dieselbe Task-Struktur aus den vorherigen Herausforderungen mit den Feldern Name (string) und Completed (bool)
  2. Erstellen Sie eine Funktion namens viewAllTasks, die ein Slice von Task-Strukturen als Parameter entgegennimmt
  3. Iterieren Sie innerhalb der Funktion viewAllTasks durch 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]"
  4. 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 zu true, "false" wird zu false)
  5. Rufen Sie Ihre Funktion viewAllTasks mit dem erstellten Slice auf
  6. 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