答案:使用Golang通过JSON文件实现笔记应用的增删改查功能,数据持久化至本地。项目结构清晰,含main.go、note业务逻辑与storage存储操作,定义Note结构体并用json tag序列化,通过LoadNotes和SaveNotes读写文件,实现Add、List、FindByID、Delete方法,结合flag处理命令行参数完成交互,确保目录与文件初始化,适合学习文件操作与结构设计。

用 Golang 实现一个简易笔记应用,核心在于实现基本的增删改查功能,并将数据持久化到本地文件。不需要依赖数据库,通过操作 JSON 文件即可完成数据存储。下面一步步说明如何构建这样一个项目。
项目结构设计
为了让代码清晰易维护,建议按功能划分目录结构:
note-app/
├── main.go
├── cmd/
├── internal/
│ └── note/
│ ├── note.go
│ └── storage.go
└── data/notes.json
将业务逻辑放在 internal/note 目录下,main.go 负责调用命令行接口,data 目录存放笔记数据文件。
定义笔记数据结构
在 internal/note/note.go 中定义笔记结构体:
立即学习“go语言免费学习笔记(深入)”;
package notetype Note struct { ID int `json:"id"` Title string `json:"title"` Content string `json:"content"` Created string `json:"created"`}
使用 json tag 确保字段能正确序列化和反序列化。ID 用于唯一标识,Created 字段记录创建时间。
实现本地文件存储
在 storage.go 中实现文件读写逻辑。核心是读取 notes.json 文件,加载笔记列表,以及保存更新后的数据。
关键函数包括:
LoadNotes():从 JSON 文件读取所有笔记SaveNotes():将笔记切片写回文件GenerateID():基于现有笔记生成新 ID
示例 SaveNotes 实现:
func SaveNotes(notes []Note, filename string) error { data, err := json.MarshalIndent(notes, "", " ") if err != nil { return err } return os.WriteFile(filename, data, 0644)}
使用 MarshalIndent 让 JSON 文件更易读。读取时用 json.Unmarshal 解析内容到切片。
实现增删改查功能
在 note 包中添加以下方法:
Add(title, content string):创建新笔记,设置 ID 和时间List():返回所有笔记FindByID(id int):根据 ID 查找笔记Delete(id int):删除指定 ID 的笔记
例如 Add 方法:
func (n *NoteManager) Add(title, content string) { now := time.Now().Format("2006-01-02 15:04") note := Note{ ID: n.GenerateID(), Title: title, Content: content, Created: now, } n.Notes = append(n.Notes, note) n.Save()}
NoteManager 可封装 Notes 切片和文件路径,统一管理状态和存储。
命令行交互
在 main.go 中使用 flag 或 fmt.Scanf 接收用户输入。简单起见可用 flag 实现子命令:
add -title "购物清单" -content "牛奶、面包"listdelete -id 1
解析参数后调用对应 note 方法即可。例如 list 命令直接打印所有笔记标题和 ID。
基本上就这些。不复杂但容易忽略的是错误处理和文件初始化——确保 data/ 目录存在,notes.json 初始为 []。整个项目无需外部依赖,适合练手 Golang 文件操作和结构体设计。
以上就是如何用 Golang 实现一个简易笔记应用_Golang 本地文件数据存储项目的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1425389.html
微信扫一扫
支付宝扫一扫