使用Golang的flag包解析-write和-list命令行参数;2. 通过time.Now().Format生成时间戳;3. 按日期将日记存为logs/2006-01-02.txt格式;4. 写入时用os.OpenFile追加内容;5. 列出时遍历logs目录读取.txt文件并输出。

用 Golang 写一个命令行日记系统,其实不难。核心是文件读写、时间处理和命令行参数解析。只要掌握这几个点,就能快速做出一个实用的小工具。
初始化项目结构
先创建项目目录,比如 diary,进入目录后运行 go mod init diary 初始化模块。项目可以简单分成几个部分:main.go 处理逻辑入口,cmd/ 存放命令解析,internal/ 放日记操作相关功能。
使用 flag 解析命令行输入
Golang 自带的 flag 包足够应付大多数 CLI 场景。假设我们支持两种操作:写日记(-write)和查看日记(-list)。代码可以这样写:
var ( writeFlag = flag.String("write", "", "写入日记内容") listFlag = flag.Bool("list", false, "列出所有日记"))
在 main 函数中调用 flag.Parse() 后,判断用户传了哪个参数,执行对应逻辑。比如用户输入:
立即学习“go语言免费学习笔记(深入)”;
go run main.go -write "今天天气不错"
程序就将这条内容保存到文件。
管理日记文件路径与格式
日记可以按天存储,也可以统一存进一个文件。推荐按天生成文件,比如 logs/2025-04-05.txt。每天的内容追加写入当天文件,方便查找。
保存时加入时间戳更清晰。Golang 的 time 包能轻松获取当前时间:
t := time.Now()formatted := t.Format("2006-01-02 15:04:05")logEntry := fmt.Sprintf("[%s] %sn", formatted, *writeFlag)
接着用 os.OpenFile 打开文件,模式设为 os.O_CREATE|os.O_WRONLY|os.O_APPEND,确保文件不存在时自动创建,已存在则追加内容。
读取并展示历史日记
当用户使用 -list 参数时,程序需要读取指定日期范围内的日志文件。可以遍历 logs/ 目录下的所有 .txt 文件,按文件名排序(文件名是日期),逐个读取内容并输出到终端。
用 ioutil.ReadDir 获取文件列表,再用 strings.HasSuffix 判断是否是 .txt 文件。读取单个文件内容可以用 os.ReadFile(Go 1.16+),简洁安全。
输出时可以在每条记录前加上文件名(即日期),让用户清楚看到哪天写了什么。
基本上就这些。文件操作别忘了处理 error,尤其是 OpenFile 和 ReadFile 可能出错。时间格式注意用 Go 的标准时间 2006-01-02,别写错。整个流程不复杂,但很实用,适合练手文件和时间处理。
以上就是如何使用 Golang 构建一个命令行日记系统_Golang 文件读写与时间管理实战的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1425902.html
微信扫一扫
支付宝扫一扫