Menu
CoddyTech

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

Часть раздела Логика и управление потоком путешествия по 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