用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 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号