Добавление задачи
Часть раздела Логика и управление потоком путешествия по GO на Coddy — урок 21 из 68.
Задание
ЛегкоОпираясь на созданную вами основу управления задачами, теперь вы реализуете основную функциональность для добавления новых задач в вашу систему. Эта задача сосредоточена на создании функции, которая расширяет ваш список задач путем добавления новых задач в существующий слайс.
Важное примечание: Поскольку названия задач могут содержать пробелы (например, "Buy groceries"), вам нужно будет использовать bufio.Scanner для чтения целых строк ввода. Функция fmt.Scanln прекращает чтение на первом пробеле, что приведет к разрыву названий задач с пробелами. Используйте bufio.NewScanner(os.Stdin) и вызывайте scanner.Scan(), а затем scanner.Text() для чтения полных строк.
Вы получите два входных значения:
- Строка, представляющая количество существующих задач (например,
"2") - Строка, содержащая названия задач, разделенные запятыми (например,
"Buy groceries,Call dentist,Finish project")
Ваша задача:
- Определить ту же структуру
Taskиз предыдущего задания с полямиName(string) иCompleted(bool) - Создать функцию с именем
addTask, которая принимает слайс структурTaskи название задачи (string) в качестве параметров - Функция
addTaskдолжна возвращать новый слайс с добавленной задачей (у новой задачи полеCompletedдолжно быть установлено вfalse) - Использовать
bufio.Scannerдля правильного чтения строк ввода, чтобы корректно обрабатывать названия задач с пробелами - Создать начальный слайс задач на основе количества существующих задач, указанного в первом входном значении:
- Если число равно
"0", начните с пустого слайса - Если число больше
"0", создайте соответствующее количество задач-заполнителей с именами вида"Existing Task 1","Existing Task 2"и т. д., все они должны быть помечены как незавершенные
- Если число равно
- Разобрать названия задач, разделенные запятыми, из второго входного значения
- Использовать функцию
addTaskдля добавления каждой новой задачи в слайс - Вывести каждую задачу из итогового слайса в формате:
"Task: [name], Completed: [true/false]" - Вывести общее количество задач в формате:
"Total tasks: [count]"
Например, если у вас есть 1 существующая задача и вы хотите добавить "Buy groceries,Call dentist", ваш вывод должен сначала показать существующую задачу, затем две новые задачи и, наконец, общее количество. Это задание дает практику манипулирования слайсами с помощью функции append и демонстрирует, как создавать функциональность, расширяющую ваши структуры данных.
Попробуйте сами
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
// TODO: Создайте здесь функцию addTask
func main() {
// Создание сканера для чтения строк ввода
scanner := bufio.NewScanner(os.Stdin)
// Чтение количества существующих задач
scanner.Scan()
existingTasksStr := scanner.Text()
// Чтение названий задач
scanner.Scan()
taskNamesStr := scanner.Text()
// TODO: Завершите реализацию
// 1. Преобразуйте existingTasksStr в целое число
// 2. Создайте начальный срез с существующими задачами
// 3. Разберите taskNamesStr и добавьте новые задачи
// 4. Выведите все задачи и общее количество
}Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком выполнения
Switch с использованием `fallthrough`Выход из вложенных цикловПродолжение конкретного циклаОператор `goto`Итоги: Продвинутое управление циклами4Проект: Простой список задач
Настройка проектаДобавление задачи2Структуры и методы
Определение методов для структурПолучатели по значениюПолучатели по указателюВыбор типа получателяМетоды против функцийИтоги: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картИтоги: счетчик частоты слов3Интерфейсы (Основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование интерфейсных типовПустой интерфейсУтверждение типаПереключатель типовИтоги: Фигуры и поведение