Go 定时器(timer)

2023-11-05

创建一个定时器:

package main

import (
    "fmt"
    "time"
)

func main() {
    timer := time.NewTimer(time.Second*3)  // 3秒定时器
    fmt.Printf("timertype: ", timer)
    
    fmt.Println(time.Now())  // 当前时间

    // 停止定时器
    //timer.Stop()

    c := <- timer.C
    fmt.Println(<-ch)  // 从通道获取时间
}

重置定时器:

package main

import (
    "fmt"
    "time"
)

func main() {
    timer := time.NewTimer(time.Second*3)  // 3秒定时器
    fmt.Printf("timertype: ", timer)
    
    fmt.Println(time.Now())  // 当前时间

    for i:=0;i<3;i++ {
        c := <- timer.C
        fmt.Println(<-ch)  // 从通道获取时间
        timer.Reset(time.Second*3)  // 重置定时器
    }
}

延时回调函数(AfterFunc):

package main

import (
    "fmt"
    "time"
)

func mian() {
    exit := make(chan bool)

    fmt.Println("start...")
    time.AfterFunc(time.Second*3, func() {
        fmt.Print("延时回调函数执行")
        exit <- true
    })

    <-exit  // 等待回调函数结束
}

定时任务:

package main

import (
    "fmt"
    "time"
)

func main() {  
    ticker := time.NewTicker(time.Second)   // 打点器,每秒执行一次
    stoper := time.NewTimer(time.Second * 5)  // 定时器,5秒后退出

    var i int
    for {
        select {
        case <- stoper.C:
            fmt.Println("stop")
            goto Stop
        
        case <-ticker.C:
            i++
            fmt.Println("tick:", i)
        }
    }

    Stop:
    fmt.Println("主程序结束")
}

时间差(since):

package main 

import (
    "fmt"
)

func main() {
    startTime := time.Now().Unix()
    time.Sleep(time.Second*3)

    //时间差
    fmt.Println(time.Since(startTime))
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go 定时器(timer) 的相关文章

随机推荐

  • http://www.msftconnecttest.com/redirect找不到应用程序解决办法

    我在连学校内网的时候 不能自动跳转到登录的页面 因为有一些默认的配置已经被修改 可能有的人认为不是自己修改的 那么原因也有可能是软件安装的过程中默认设置被修改 也有可能是你不轻易间点错了 不废话了 直接发图 第一步 window10 点击左
  • epoll全面讲解:从实现到应用

    epoll全面讲解 从实现到应用 什么是epoll 或者说 它和select有什么区别 什么是select 有的朋友可能对select也不是很了解啊 我这里稍微科普一下 网络连接 服务器也是通过文件描述符来管理这些连接上来的客户端 既然是供
  • 使用 getopt() 进行命令行处理

    使用 getopt 进行命令行处理 轻松处理复杂命令行 文档选项 打印本页 将此页作为电子邮件发送 样例代码 级别 中级 Chris Herborth chrish pobox com 自由撰稿人 作家 2006 年 5 月 25 日 所有
  • 只需单击三次,让中文GPT-2为你生成定制故事

    2019 11 12 12 49 55 机器之心报道 机器之心编辑部 想要 GPT 2 生成中文故事 听听它对各种主题的看法 你可以试试这个中文预训练 GPT 2 项目 它开源了预训练结果与 Colab Demo 演示 只需要单击三次 我们
  • QSettings读取int文件解析失败

    问题 QSettings解析失败 ini文件如下 System name CPMS with IIoT by R Campro Precision Machinery Co Ltd gs sys id CAMPRO gs cod csub
  • AI引擎助力,CamScanner智能高清滤镜开启扫描新纪元!

    文章目录 写在前面 突破图像处理难点 扫描全能王的独特优势 耳听为虚 眼见为实 产品背后的主要核心 AI Scan助力 深度学习助力智能文档处理的国际化进程 品味智能文档处理的轻松与精准 写在前面 在数字化快速发展的今天 我们时常会遇到需要
  • 产品经理漫谈四

    每几天一篇 业界学习知识分享 请关注 如有同感请加vip阅读 产品经理如何给足一线 渠道 区域销售足够信心 思考 人性 商业 利益共同体 尊重时效 尊重承诺 价值方向 行业动态符合 具有更大兼容性 服务体系建立 笔者认为 除了产品包含市场方
  • 芯片验证从零开始系列(三)——SystemVerilog的连接设计和测试平台

    芯片验证从零开始系列 三 SystemVerilog的连接设计和测试平台 接口interface modport 验证环境结构 激励发生器 监测器 检测器 测试平台和设计间的竞争原因 断言 总结 声明 未经作者允许 禁止转载 推荐一个IC
  • AD域服务器下如何批量创建用户及修改AD域的最大返回条目数。

    最近在用户现场遇到一个问题就是通过ldap导入用户 发现导入失败 经过分析得知是AD域服务器设置的最大返回条目数默认为1000 当数据超过1000 通过ldap search s获取数据时就会异常 通过抓包分析得知是 报文回复不全导致无法解
  • 史上最全 App功能测试点分析

    1 2测试周期 测试周期可按项目的开发周期来确定测试时间 一般测试时间为两三周 即 15个工作日 根据项目情况以及版本质量可适当缩短或延长测试时间 正式测试前先向主管确认项目排期 1 3测试资源 测试任务开始前 检查各项测试资源 产品功能需
  • [k8s]笔记01

    1 k8s是什么 k8s是一套自动化容器运维的开源平台 2 k8s可以做什么 能在物理机或虚拟集群上调度和运行程序容器 快速精准地部署应用程序 即时伸缩应用程序 无缝展现新特征 限制硬件用量仅为所需资源 3 k8s概念 1 Cluster集
  • java8新特性从入门到应用 第二章 Streams数据流

    java8新特性从入门到应用 第二章 Stream 数据流 特点介绍 Stream组成 源 中间操作 筛选与切片 映射 排序 Stream的终止操作 查找与匹配 归约 收集 Collector 接口API 此流非彼流 估计第一眼看到这个标题
  • springboot定时任务出错 Unexpected use of scheduler.

    最近在使用springboot的定时器写定时任务时 项目启动就会报以下的错误 java lang IllegalStateException Unexpected use of scheduler 困扰了很久 因为以前也写过定时器 但没遇到
  • 北大硕士7年嵌入式学习经验分享

    大家现在状态是怎么样的 这几年技术进步怎么样 职场晋升 管理水平有没有提升 欢迎留言 本文内容来自于知乎 觉得内容很不错 分享给大家 下文的我代表的是原作者 作者 梦人亦冷 链接 https www zhihu com question 3
  • ip地址0.0.0.0与127.0.0.1的区别

    最近在项目开发中发现一个奇怪的问题 当服务器与客户端在同一台机器上时 用服务器ip 本地主机ip 192 168 1 xxx 127 0 0 1以及0 0 0 0都能登陆服务器 于是找点资料研究一下 其实 最开始是发现服务器ip填0能登陆成
  • MyBatis框架搭建及教程(详解)

    MyBatis文章目录 Mybatis框架的搭建以及使用教程 目录 简介 一 MyBatis框架搭建步骤 1 1 配置XML 1 2 编写MyBatis框架核心配置文件 1 3 创建实体类 1 4 创建Mapper接口 1 5 创建SQL映
  • doesnt exist table_MYSQL ERROR 1146 Table doesnt exist 解析

    原创转载请注明出处 源码版本 5 7 14 在MYSQL使用innodb的时候我们有时候会看到如下报错 ERROR 1146 42S02 Table test test1bak doesn t exist 首先总结下原因 缺少frm文件 i
  • Mybatis映射文件中动态sql语句

    目录 Mybatis映射文件深入 动态sql语句 官方文档中动态sql 动态SQL之if 测试示例if 动态sql之foreach 测试示例foreach sql片段的抽取 Mybatis映射文件深入知识小结 Mybatis映射文件深入 动
  • 分段,分页与段页式存储管理

    一 分页存储管理 1 基本思想 用户程序的地址空间被划分成若干固定大小的区域 称为 页 相应地 内存空间分成若干个物理块 页和块的大小相等 可将用户程序的任一页放在内存的任一块中 实现了离散分配 1 等分内存 页式存储管理将内存空间划分成等
  • Go 定时器(timer)

    创建一个定时器 package main import fmt time func main timer time NewTimer time Second 3 3秒定时器 fmt Printf timertype timer fmt Pr