Go语言实现简易命令行定时提醒程序的示例代码

 更新时间:2025年09月08日 08:47:02   作者:程序员爱钓鱼  
在日常工作和学习中,我们常常需要一个小工具来提醒自己,本文将用 Go 写一个轻量级的 命令行定时提醒程序,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

在日常工作和学习中,我们常常需要一个小工具来提醒自己:比如休息眼睛、喝水、开会等。虽然很多软件有提醒功能,但用 Go 写一个轻量级的 命令行定时提醒程序,不仅简单实用,还能帮助我们熟悉 时间操作、并发、命令行交互 等关键知识点。

本文将实现一个简易定时提醒程序,支持以下功能:

  • 指定提醒时间(如 10 秒后、30 分钟后)
  • 提醒时在终端打印提示信息
  • 支持多任务提醒

一、程序思路

用户通过命令行传入提醒时间和内容,例如:

remind -after=10s -msg="喝水提醒"
remind -after=1m -msg="开会啦"

程序解析参数,使用 time.Aftertime.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定时提醒内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • goland设置控制台折叠效果

    goland设置控制台折叠效果

    这篇文章主要介绍了goland设置控制台折叠效果,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • go语言使用pipe读取子进程标准输出的方法

    go语言使用pipe读取子进程标准输出的方法

    这篇文章主要介绍了go语言使用pipe读取子进程标准输出的方法,实例分析了Go语言针对进程操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 一文带你掌握Go语言中文件的写入操作

    一文带你掌握Go语言中文件的写入操作

    这篇文章主要和大家分享一下Go语言中文件的写入操作,文中的示例代码讲解详细,对我们学习Go语言有一定的帮助,需要的小伙伴可以参考一下
    2022-12-12
  • 详解Go strconv包

    详解Go strconv包

    Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换。这篇文章主要介绍了Go strconv包的相关知识,需要的朋友可以参考下
    2020-10-10
  • Golang中如何实现枚举详析

    Golang中如何实现枚举详析

    举就是将数据值一一列出来,枚举可以用来表示一些固定的值,枚举是常量组成的,下面这篇文章主要给大家介绍了关于Golang中如何实现枚举的相关资料,需要的朋友可以参考下
    2022-07-07
  • Go实现凯撒密码加密解密

    Go实现凯撒密码加密解密

    这篇文章主要为大家介绍了Go实现凯撒密码加密解密示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • go语言阻塞函数和非阻塞函数实现

    go语言阻塞函数和非阻塞函数实现

    本文主要介绍了go语言阻塞函数和非阻塞函数实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • golang网络通信超时设置方式

    golang网络通信超时设置方式

    这篇文章主要介绍了golang网络通信超时设置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Golang中的Interface详解

    Golang中的Interface详解

    本文详细讲解了Golang中的Interface,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Go语言实现顺序存储的线性表实例

    Go语言实现顺序存储的线性表实例

    这篇文章主要介绍了Go语言实现顺序存储的线性表的方法,实例分析了Go语言实现线性表的定义、插入、删除元素等的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论