Dodawanie zadania
Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 21 z 68.
Wyzwanie
ŁatwyRozwijając podstawy zarządzania zadaniami, zaimplementujesz teraz podstawową funkcjonalność dodawania nowych zadań do swojego systemu. To wyzwanie koncentruje się na utworzeniu funkcji, która rozszerza listę zadań przez dołączanie nowych zadań do istniejącej wycinkowej tablicy.
Ważna uwaga: Ponieważ nazwy zadań mogą zawierać spacje (np. "Buy groceries"), musisz użyć bufio.Scanner, aby odczytywać całe wiersze wejścia. Funkcja fmt.Scanln przestaje czytać przy pierwszej spacji, co powodowałoby problemy z nazwami zadań zawierającymi spacje. Użyj bufio.NewScanner(os.Stdin) i wywołaj scanner.Scan(), a następnie scanner.Text(), aby odczytać całe wiersze.
Otrzymasz dwa dane wejściowe:
- Ciąg znaków reprezentujący liczbę istniejących zadań (np.
"2") - Ciąg znaków zawierający nazwy zadań oddzielone przecinkami (np.
"Buy groceries,Call dentist,Finish project")
Twoim zadaniem jest:
- Zdefiniować tę samą strukturę
Taskco w poprzednim wyzwaniu, z polamiName(string) iCompleted(bool) - Utworzyć funkcję o nazwie
addTask, która przyjmuje jako parametry wycinek strukturTaskoraz nazwę zadania (string) - Funkcja
addTaskpowinna zwracać nowy wycinek z dodanym zadaniem (dla nowego zadania poleCompletedpowinno mieć wartośćfalse) - Użyć
bufio.Scannerdo prawidłowego odczytywania wierszy wejścia, aby obsłużyć nazwy zadań zawierające spacje - Utworzyć początkowy wycinek zadań na podstawie liczby istniejących zadań podanej w pierwszym wejściu:
- Jeśli liczba wynosi
"0", rozpocząć od pustego wycinka - Jeśli liczba jest większa niż
"0", utworzyć tyle zadań zastępczych o nazwach takich jak"Existing Task 1","Existing Task 2"itd., wszystkie oznaczone jako nieukończone
- Jeśli liczba wynosi
- Odczytać rozdzielone przecinkami nazwy zadań z drugiego wejścia
- Użyć funkcji
addTask, aby dodać każde nowe zadanie do wycinka - Wypisać każde zadanie z końcowego wycinka w formacie:
"Task: [name], Completed: [true/false]" - Wypisać łączną liczbę zadań w formacie:
"Total tasks: [count]"
Na przykład, jeśli masz 1 istniejące zadanie i chcesz dodać "Buy groceries,Call dentist", wynik powinien najpierw wyświetlać istniejące zadanie, a następnie dwa nowe zadania, a na końcu łączną liczbę. To wyzwanie ćwiczy manipulowanie wycinkami za pomocą funkcji append i pokazuje, jak tworzyć funkcjonalność rozszerzającą struktury danych.
Spróbuj swoich sił
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
// TODO: Utwórz tutaj funkcję addTask
func main() {
// Utwórz scanner do odczytywania wierszy wejściowych
scanner := bufio.NewScanner(os.Stdin)
// Odczytaj liczbę istniejących zadań
scanner.Scan()
existingTasksStr := scanner.Text()
// Odczytaj nazwy zadań
scanner.Scan()
taskNamesStr := scanner.Text()
// TODO: Dokończ implementację
// 1. Przekonwertuj existingTasksStr na liczbę całkowitą
// 2. Utwórz początkowy wycinek zawierający istniejące zadania
// 3. Przeanalizuj taskNamesStr i dodaj nowe zadania
// 4. Wypisz wszystkie zadania i ich łączną liczbę
}Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowane sterowanie przepływem
Instrukcja switch z `fallthrough`Przerywanie zagnieżdżonych pętliKontynuowanie określonej pętliInstrukcja `goto`Podsumowanie — zaawansowane sterowanie pętlami4Projekt: Prosta lista zadań
Konfiguracja projektuDodawanie zadania2Struktury i metody
Definiowanie metod dla strukturOdbiorniki przez wartośćOdbiorniki przez wskaźnikWybór odbiornikówMetody a funkcjePodsumowanie — działanie struktur5Mapy w szczegółach
Mapy strukturWskaźniki jako wartości mapSprawdzanie, czy mapy są nilPorównywanie mapPodsumowanie — licznik częstości słów3Interfejsy (podstawy)
Czym jest interfejs?Definiowanie interfejsuImplementowanie interfejsuUżywanie typów interfejsowychPusty interfejsAsercje typuPrzełącznik typówPodsumowanie – kształty i zachowaniaPoćwicz samodzielnie: Kompilator Go online