-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtodo.go
117 lines (88 loc) · 1.69 KB
/
todo.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
type Task struct {
ID int
title string
status bool
}
var tasks []Task
var taskCounter int
func showOption() {
fmt.Println()
fmt.Println("Choose Option:")
fmt.Println("1. Create Task")
fmt.Println("2. Show Tasks")
fmt.Println("3. Update Task")
fmt.Println("4. Exit")
}
func createTask(title string) {
taskCounter++
task := Task{taskCounter, title, false}
tasks = append(tasks, task)
fmt.Println("Task created, ", title)
}
func showTasks() {
fmt.Println()
if len(tasks) == 0 {
fmt.Println("No tasks found")
return
}
fmt.Println("Task List : ")
for _, task := range tasks {
var status string = "Pending"
if task.status {
status = "Completed"
}
fmt.Println(task.ID, ". ", task.title, status)
}
}
func markTaskComplete(ID int) {
fmt.Println()
for i, task := range tasks {
if task.ID == ID {
tasks[i].status = true
fmt.Println("Task completed:", task.title)
return
}
}
fmt.Println("Invalid id, task not found with this ID")
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
for {
showOption()
fmt.Print("Choose an option: ")
scanner.Scan()
option := scanner.Text()
switch option {
case "1":
fmt.Print("Enter Task title: ")
scanner.Scan()
title := scanner.Text()
createTask(title)
case "2":
showTasks()
case "3":
fmt.Print("Enter Task Id: ")
scanner.Scan()
StrId := scanner.Text()
taskId, err := strconv.Atoi(StrId)
if err != nil {
fmt.Println("Invalid Task Id")
continue
}
markTaskComplete(taskId)
case "4":
fmt.Println("Goodbye!!")
fmt.Println("Goodbye!!")
return
default:
fmt.Println("Invalid option")
}
}
}