Go语言实现简易命令行定时提醒程序的示例代码
作者:程序员爱钓鱼
在日常工作和学习中,我们常常需要一个小工具来提醒自己,本文将用 Go 写一个轻量级的 命令行定时提醒程序,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
在日常工作和学习中,我们常常需要一个小工具来提醒自己:比如休息眼睛、喝水、开会等。虽然很多软件有提醒功能,但用 Go 写一个轻量级的 命令行定时提醒程序,不仅简单实用,还能帮助我们熟悉 时间操作、并发、命令行交互 等关键知识点。
本文将实现一个简易定时提醒程序,支持以下功能:
- 指定提醒时间(如 10 秒后、30 分钟后)
- 提醒时在终端打印提示信息
- 支持多任务提醒
一、程序思路
用户通过命令行传入提醒时间和内容,例如:
remind -after=10s -msg="喝水提醒"
remind -after=1m -msg="开会啦"
程序解析参数,使用 time.After
或 time.NewTimer
实现延迟提醒。
到点后输出提醒信息。
二、代码实现
main.go
:
package main import ( "flag" "fmt" "time" ) func main() { // 定义命令行参数 after := flag.Duration("after", 10*time.Second, "提醒时间,例如 10s、1m、2h") msg := flag.String("msg", "时间到啦!", "提醒内容") flag.Parse() fmt.Printf("⏳ 已设置提醒: %s 后提醒 -> %s\n", after.String(), *msg) // 使用定时器 timer := time.NewTimer(*after) // 等待定时触发 <-timer.C fmt.Printf("🔔 提醒: %s\n", *msg) }
三、运行测试
10 秒提醒
go run main.go -after=10s -msg="喝水提醒"
输出:
⏳ 已设置提醒: 10s 后提醒 -> 喝水提醒
🔔 提醒: 喝水提醒
1 分钟提醒
go run main.go -after=1m -msg="开会啦"
输出:
⏳ 已设置提醒: 1m0s 后提醒 -> 开会啦
🔔 提醒: 开会啦
四、支持多任务提醒
如果我们想同时设置多个提醒,可以在 flag.Args()
获取额外参数,或者用一个简单的 配置文件。这里用 goroutine 来并发执行多个提醒。
示例(多个提醒同时执行):
package main import ( "fmt" "time" ) type Reminder struct { After time.Duration Msg string } func main() { reminders := []Reminder{ {After: 5 * time.Second, Msg: "喝水提醒"}, {After: 10 * time.Second, Msg: "起身走动一下"}, {After: 15 * time.Second, Msg: "开会啦"}, } for _, r := range reminders { go func(r Reminder) { timer := time.NewTimer(r.After) <-timer.C fmt.Printf("🔔 提醒: %s\n", r.Msg) }(r) } // 阻塞主程序,否则会直接退出 select {} }
运行后,程序会在 5s、10s、15s 分别提醒。
五、总结
通过这个案例,我们学习了:
- 如何用
flag
包解析命令行参数 - 使用
time.NewTimer
/time.After
实现延时提醒 - 使用 goroutine 实现多个提醒并发执行
这个简易定时提醒工具非常轻巧,适合平时用来做一些 番茄钟、喝水提醒 或 会议提醒。
到此这篇关于Go语言实现简易命令行定时提醒程序的示例代码的文章就介绍到这了,更多相关Go定时提醒内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!