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. Выведите все задачи и общее количество
}

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

Потренируйтесь самостоятельно: Онлайн-компилятор Go