Menu
Coddy logo textTech

Eine Aufgabe hinzufügen

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

challenge icon

Aufgabe

Einfach

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

  1. Dieselbe Task-Struktur wie in der vorherigen Herausforderung zu definieren, mit den Feldern Name (string) und Completed (bool)
  2. Eine Funktion namens addTask zu erstellen, die einen Slice aus Task-Strukturen und einen Aufgabennamen (string) als Parameter übernimmt
  3. Die Funktion addTask soll einen neuen Slice mit der hinzugefügten Aufgabe zurückgeben (bei der neuen Aufgabe soll Completed auf false gesetzt sein)
  4. bufio.Scanner zu verwenden, um die Eingabezeilen korrekt zu lesen und Aufgabennamen mit Leerzeichen zu verarbeiten
  5. 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
  6. Die durch Kommas getrennten Aufgabennamen aus der zweiten Eingabe zu analysieren
  7. Deine Funktion addTask zu verwenden, um jede neue Aufgabe zum Slice hinzuzufügen
  8. Jede Aufgabe im endgültigen Slice im Format "Task: [name], Completed: [true/false]" auszugeben
  9. 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

Übe selbstständig: Online-Go-Compiler