Wyświetlanie wszystkich zadań
Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 22 z 68.
Wyzwanie
ŁatwyKontynuując pracę nad systemem zarządzania zadaniami, zaimplementujesz teraz funkcjonalność wyświetlania wszystkich zadań w czytelnej formie. To wyzwanie skupia się na iterowaniu po kolekcji zadań i prezentowaniu każdego zadania wraz z informacją o jego ukończeniu, z użyciem wyraźnych oznaczeń wizualnych.
Otrzymasz dwa dane wejściowe:
- Ciag znaków reprezentujący liczbę zadań (np.
"4") - Ciąg znaków zawierający dane zadań w formacie:
"name1:status1,name2:status2,name3:status3", gdzie status to"true"lub"false"(np."Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")
Twoje zadanie:
- Zdefiniuj tę samą strukturę
Taskco w poprzednich wyzwaniach, z polamiName(string) iCompleted(bool) - Utwórz funkcję o nazwie
viewAllTasks, która przyjmuje jako parametr wycinek strukturTask - Wewnątrz funkcji
viewAllTasksiteruj po wycinku i wypisz każde zadanie w następującym formacie:- W przypadku ukończonych zadań:
"[x] [task_name]" - W przypadku nieukończonych zadań:
"[ ] [task_name]"
- W przypadku ukończonych zadań:
- Przeanalizuj dane zadań z drugiego wejścia, aby utworzyć wycinek zadań:
- Podziel dane wejściowe po przecinkach, aby uzyskać poszczególne wpisy zadań
- Dla każdego wpisu podziel go po dwukropku, aby oddzielić nazwę od statusu
- Przekształć ciąg znaków statusu na wartość logiczną (
"true"dajetrue, a"false"dajefalse)
- Wywołaj funkcję
viewAllTasksz utworzonym wycinkiem - Po wyświetleniu wszystkich zadań wypisz podsumowanie w formacie:
"Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
Na przykład, jeśli masz zadania "Buy groceries:false,Call dentist:true,Finish project:false", dane wyjściowe powinny pokazywać każde zadanie z odpowiednim polem wyboru, a następnie podsumowanie z łączną liczbą zadań i statystykami ukończenia. To wyzwanie pozwala ćwiczyć iterowanie po wycinku, formatowanie warunkowe za pomocą instrukcji if oraz prezentuje użytkownikom przejrzysty obraz postępów w realizacji zadań.
Spróbuj swoich sił
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
func viewAllTasks(tasks []Task) {
// TODO: Zaimplementuj funkcję wyświetlającą wszystkie zadania
// Dla ukończonych zadań: "[x] [task_name]"
// Dla nieukończonych zadań: "[ ] [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: Przeanalizuj dane zadań z ciągu znaków taskData
// Podziel według przecinków, aby uzyskać poszczególne wpisy zadań
taskEntries := strings.Split(taskData, ",")
_ = taskEntries
// Każdy wpis podziel według dwukropka, aby oddzielić nazwę od statusu
// Przekonwertuj ciąg znaków statusu na wartość logiczną i utwórz struktury Task
// TODO: Wywołaj funkcję viewAllTasks z utworzonym wycinkiem
// TODO: Oblicz i wypisz podsumowanie
// Format: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
_ = tasks
_ = numTasks
}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