package main
import (
"fmt"
"time"
)
type Task struct {
Title string
Description string
DueDate time.Time
Priority int
}
func (t Task) IsOverdue() bool {
return
time.Now ().After(t.DueDate)
}
type Note struct {
Title string
Text string
}
type ToDoList struct {
Name string
Tasks []Task
Notes []Note
}
func (t *ToDoList) TasksCount() int {
return len(t.Tasks)
}
func (t *ToDoList) NotesCount() int {
return len(t.Notes)
}
func (t *ToDoList) CountTopPrioritiesTasks() int {
count := 0
for _, task := range t.Tasks {
if task.Priority == 1 {
count++
}
}
return count
}
func (t *ToDoList) CountOverdueTasks() int {
count := 0
for _, task := range t.Tasks {
if task.IsOverdue() {
count++
}
}
return count
}
func (t *ToDoList) AddTask(task Task) {
t.Tasks = append(t.Tasks, task)
}
func (t *ToDoList) AddNote(note Note) {
t.Notes = append(t.Notes, note)
}
func inputTask() Task {
var title, description string
var priority int
fmt.Print("Введите заголовок задачи: ")
fmt.Scanln(&title)
fmt.Print("Введите описание задачи: ")
fmt.Scanln(&description)
fmt.Print("Введите приоритет (1 - высокий, 2 - средний, 3 - низкий): ")
fmt.Scanln(&priority)
dueDate :=
time.Now ()
return Task{Title: title, Description: description, DueDate: dueDate.Add(48 * time.Hour), Priority: priority}
}
func inputNote() Note {
var title, text string
fmt.Print("Введите заголовок заметки: ")
fmt.Scanln(&title)
fmt.Print("Введите текст заметки: ")
fmt.Scanln(&text)
return Note{Title: title, Text: text}
}
func main() {
todoList := ToDoList{Name: "Мой список дел"}
for i := 0; i < 2; i++ {
todoList.AddTask(inputTask())
}
for i := 0; i < 1; i++ {
todoList.AddNote(inputNote())
}
fmt.Printf("\nСписок дел: %s\n",
todoList.Name )
fmt.Printf("Общее количество задач: %d\n", todoList.TasksCount())
fmt.Printf("Общее количество заметок: %d\n", todoList.NotesCount())
fmt.Printf("Количество приоритетных задач: %d\n", todoList.CountTopPrioritiesTasks())
fmt.Printf("Количество просроченных задач: %d\n", todoList.CountOverdueTasks())
}
Итак, у Гоши уже есть задачи, но зачем задачи сами по себе, без списка дел? Помогите Гоше воплотить его мечту и создайте его идеальный список дел.
Напишите структура Note (сущность заметок, у которых в отличие от задач нет чётких дедлайнов и приоритета):
1. title - заголовок (тип string)
2. text - текст заметок (тип string)
Создайте структуру ToDoList с такими полями:
1. name - название списка (тип string)
2. tasks - список дел на сегодня (тип слайс структур Task (из предыдущего задания))
3. notes - список дополнительных заметок (тип слайс структур Note)
Для этой структуры реализуйте методы TasksCount и NotesCount, которые возвращают общее количество задач и заметок соответственно.
Также реализуйте метод CountTopPrioritiesTasks, который возвращает количество приоритетных задач. А также метод CountOverdueTasks, который возвращает количество просроченных задач.
Сама структура Task и все её методы из предыдущего задания также должны быть реализованы в этом.