使用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/ 放日记操作相关功能。
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] %s\n", 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 文件读写与时间管理实战的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号