Theory
The task and the grading checklist
The task
Build a working command-line app that manages a list of your own items — a task tracker, movie watchlist, gym log, game backlog, expense list, book list — your choice. It must run, save your data, load it back, and let you search and summarize it.
The next steps build a complete sample (a task tracker), file by file. Your project must have a different theme but the same skeleton.
Grading checklist (required features)
- A record type — a
structwith at least 3 fields (e.g.Title string,Priority int,Done bool). - A menu loop —
for+switch, repeats until "quit". Handles bad input without crashing. - Add — create a new item from user input,
appendto a[]Item. - List — print all items, numbered.
- Mark / edit one item — change an item in place using a pointer (
*Item). - Search / filter — find items by keyword in the title, or filter by done/not-done. Prints only matches.
- Map lookup — build a
map[string]Item(or amap[string]intindex) and fetch one item by its title. - Summary stat — print a count/summary, e.g. "3 of 7 done", "2 high-priority".
- Save & load — write items to a file, read them back on startup so data survives a restart.
- At least 4 functions with clear jobs —
mainmostly calls functions, it doesn't hold the logic. - Clean code — passes
gofmtandgo vetwith no warnings.