Menu
Coddy logo textTech

Добавление задачи

Часть раздела Логика и управление потоком путешествия по GO на Coddy — урок 21 из 68.

challenge icon

Задание

Легко

Опираясь на созданную вами основу управления задачами, теперь вы реализуете основную функциональность для добавления новых задач в вашу систему. Эта задача сосредоточена на создании функции, которая расширяет ваш список задач путем добавления новых задач в существующий слайс.

Важное примечание: Поскольку названия задач могут содержать пробелы (например, "Buy groceries"), вам нужно будет использовать bufio.Scanner для чтения целых строк ввода. Функция fmt.Scanln прекращает чтение на первом пробеле, что приведет к разрыву названий задач с пробелами. Используйте bufio.NewScanner(os.Stdin) и вызывайте scanner.Scan(), а затем scanner.Text() для чтения полных строк.

Вы получите два входных значения:

  • Строка, представляющая количество существующих задач (например, "2")
  • Строка, содержащая названия задач, разделенные запятыми (например, "Buy groceries,Call dentist,Finish project")

Ваша задача:

  1. Определить ту же структуру Task из предыдущего задания с полями Name (string) и Completed (bool)
  2. Создать функцию с именем addTask, которая принимает слайс структур Task и название задачи (string) в качестве параметров
  3. Функция addTask должна возвращать новый слайс с добавленной задачей (у новой задачи поле Completed должно быть установлено в false)
  4. Использовать bufio.Scanner для правильного чтения строк ввода, чтобы корректно обрабатывать названия задач с пробелами
  5. Создать начальный слайс задач на основе количества существующих задач, указанного в первом входном значении:
    • Если число равно "0", начните с пустого слайса
    • Если число больше "0", создайте соответствующее количество задач-заполнителей с именами вида "Existing Task 1", "Existing Task 2" и т. д., все они должны быть помечены как незавершенные
  6. Разобрать названия задач, разделенные запятыми, из второго входного значения
  7. Использовать функцию addTask для добавления каждой новой задачи в слайс
  8. Вывести каждую задачу из итогового слайса в формате: "Task: [name], Completed: [true/false]"
  9. Вывести общее количество задач в формате: "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. Выведите все задачи и общее количество
}

Все уроки раздела Логика и управление потоком