任务管理器用Go实现,含Status枚举、Task结构体(ID/Title/Desc/Status/Progress),进度0–100校验,切片CRUD操作,支持状态与进度联动更新。

用 Go 语言写一个简易任务管理器,核心是用结构体建模任务、用切片或 map 管理任务集合,并通过命令行交互实现增删查改和进度更新。不需要数据库,纯内存操作即可快速验证逻辑,后续再扩展持久化或 Web 界面。
定义任务结构与状态管理
任务至少包含 ID、标题、描述、状态(待办/进行中/已完成)和进度百分比(0–100)。用枚举式常量明确状态,避免字符串硬编码:
- 定义 Status 类型:如 type Status int,配合 const (Todo Status = iota; InProgress; Done)
- Task 结构体:含 ID int、Title string、Desc string、Status Status、Progress int
- 进度约束:在设置 Progress 时检查是否在 0–100 范围内,超出则自动截断或返回错误
实现基础任务操作函数
围绕任务切片([]Task)封装 CRUD 功能,保持逻辑内聚:
- AddTask:自增 ID 分配,初始化为 Todo 状态、进度 0
- UpdateStatus:按 ID 查找并修改 Status;若设为 Done,自动将 Progress 设为 100
- UpdateProgress:仅更新 Progress 字段,同时根据数值自动调整 Status(如 Progress==100 → Done;Progress>0 &&
- ListTasks:格式化输出所有任务,用 Unicode 符号(✅、?、⏳)直观表示状态
构建简单命令行交互界面
使用 fmt.Scanln 和 fmt.Print 实现菜单驱动,避免依赖第三方 CLI 库:
立即学习“go语言免费学习笔记(深入)”;
- 主循环显示选项:1. 添加任务|2. 查看全部|3. 更新进度|4. 标记完成|0. 退出
- 每个选项后读取必要输入(如任务标题、ID、新进度值),调用对应函数并打印结果提示
- 输入非法时(如非数字 ID、超范围进度)给出明确错误提示,不崩溃,继续循环
可选增强:支持简单持久化
用 encoding/json 把任务列表存为 JSON 文件,启动时自动加载,关闭前保存:
- 初始化时尝试读取 tasks.json,解析失败则用空切片
- 每次修改后不立即写盘,提供 “保存” 命令或在退出前统一保存
- 注意文件操作加简单错误处理(如 os.IsNotExist 判断文件不存在)










