用golang开发一个待办事项应用的关键在于理清结构、处理数据持久化并实现crud操作。1. 结构设计上,分为main.go入口、todo包下的数据模型与存储逻辑、以及存放json文件的data目录;2. 数据模型使用todo结构体与todos切片,并通过encoding/json进行序列化;3. 文件读写通过loadfromfile与savetofile函数实现加载与保存功能;4. crud操作包括add添加任务、遍历输出列表、markdone标记完成、delete删除任务;5. 主程序通过解析命令行参数调用对应方法,完成交互。整个过程模块清晰,适合go语言入门实践。
用Golang开发一个待办事项应用,结合文件存储和CRUD操作,其实并不难。关键在于理清结构、处理好数据持久化,并实现基本的增删改查功能。
这篇文章会从结构设计、数据模型、文件读写、以及具体操作实现这几个方面来展开,适合刚入门Go语言的朋友参考。
在开始写代码之前,先规划一下整体结构。一个简单的待办事项应用通常包括:
立即学习“go语言免费学习笔记(深入)”;
建议将代码分为几个包或目录,比如:
todo-app/ ├── main.go ├── todo/ │ ├── todo.go │ └── storage.go └── data/ └── todos.json
这样模块清晰,后续也方便扩展。
我们先定义一个
Todo
type Todo struct { ID int `json:"id"` Title string `json:"title"` Done bool `json:"done"` }
然后需要一个列表来保存所有待办事项:
type Todos []Todo
为了支持文件存储,我们可以使用标准库中的
encoding/json
我们要做的就是:
todos.json
可以写两个函数:
LoadFromFile
SaveToFile
func LoadFromFile(path string) (Todos, error) { data, err := os.ReadFile(path) if os.IsNotExist(err) { return Todos{}, nil } if err != nil { return nil, err } var todos Todos err = json.Unmarshal(data, &todos) return todos, err } func (t *Todos) SaveToFile(path string) error { data, _ := json.MarshalIndent(t, "", " ") return os.WriteFile(path, data, 0644) }
这两个函数是整个持久化的基础,一定要确保路径正确,且有读写权限。
接下来就是实现增删改查了,这部分逻辑相对简单,但要注意边界条件。
func (t *Todos) Add(title string) { newID := len(*t) + 1 *t = append(*t, Todo{ ID: newID, Title: title, Done: false, }) }
直接遍历输出即可:
for _, todo := range *todos { status := " " if todo.Done { status = "x" } fmt.Printf("[%d] [%s] %s\n", todo.ID, status, todo.Title) }
通过ID查找并更新状态:
func (t *Todos) MarkDone(id int) error { for i := range *t { if (*t)[i].ID == id { (*t)[i].Done = true return nil } } return fmt.Errorf("task not found") }
删除时要小心索引问题,可以用切片操作:
func (t *Todos) Delete(id int) error { for i, todo := range *t { if todo.ID == id { *t = append((*t)[:i], (*t)[i+1:]...) return nil } } return fmt.Errorf("task not found") }
最后,在
main.go
todo add "Buy milk" todo list todo done 1 todo delete 2
可以通过
os.Args
flag
这部分就不贴完整代码了,重点是把各个操作映射到对应的函数调用上。
基本上就这些了。虽然只是个控制台应用,但已经涵盖了结构设计、数据建模、文件存储和基本CRUD操作的核心内容。你可以在此基础上加上Web界面或者数据库支持,继续拓展功能。
以上就是如何用Golang开发一个待办事项应用 结合文件存储与CRUD操作的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号