初学GO,time包里sleep是最常用,今天突然看到一个time.after,特记录time.after用法笔记如下:

首先是time包里的定义

// After waits for the duration to elapse and then sends the current time
// on the returned channel.
// It is equivalent to NewTimer(d).C.
// The underlying Timer is not recovered by the garbage collector
// until the timer fires. If efficiency is a concern, use NewTimer
// instead and call Timer.Stop if the timer is no longer needed.
func After(d Duration) <-chan Time {return NewTimer(d).C
}

直译就是:  

等待参数duration时间后,向返回的chan里面写入当前时间。

和NewTimer(d).C效果一样

直到计时器触发,垃圾回收器才会恢复基础计时器。

如果担心效率问题, 请改用 NewTimer, 然后调用计时器. 不用了就停止计时器。

解释一下,是什么意思呢?

就是调用time.After(duration),此函数马上返回,返回一个time.Time类型的Chan,不阻塞。

后面你该做什么做什么,不影响。到了duration时间后,自动塞一个当前时间进去。

你可以阻塞的等待,或者晚点再取。

因为底层是用NewTimer实现的,所以如果考虑到效率低,可以直接自己调用NewTimer。

package mainimport ("time""fmt"
)func main()  {tchan := time.After(time.Second*3)fmt.Printf("tchan type=%T\n",tchan)fmt.Println("mark 1")fmt.Println("tchan=",<-tchan)fmt.Println("mark 2")
}

上面的例子运行结果如下

tchan type=<-chan time.Time
mark 1
tchan= 2018-03-15 09:38:51.023106 +0800 CST m=+3.015805601
mark 2

首先瞬间打印出前两行,然后等待3S,打印后后两行。

转载于:https://www.cnblogs.com/qggg/p/8571808.html

GO-time.after 用法相关推荐

  1. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  2. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

  3. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  4. pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

  5. python yield 和 yield from用法总结

    #例1. 简单输出斐波那契數列前 N 个数 #缺点:该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列 #要提高 fab 函数的可复用性,最好不要直接打印出数列,而 ...

  6. tf.nn.embedding_lookup()的用法

    函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...

  7. OpenMP用法大全

    OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的 ...

  8. Dorado用法与示例

    Dorado用法与示例 dorado用后总结 一.dorado概念 dorado的产品全名是"dorado展现中间件".从产品形态上dorado由两部分组成,第一部分是一个具有AJ ...

  9. TensorFlow用法

    TensorFlow用法 什么是TensorFlow TensorFlow是一个开源软件库,用于使用数据流图进行数值计算.图中的节点表示数学运算,而图的边缘表示流动的多维数据数组(张量).这种灵活的体 ...

  10. TensorFlow Keras API用法

    TensorFlow Keras API用法 Keras 是与 TensorFlow 一起使用的更高级别的作为后端的 API.添加层就像添加一行代码一样简单.在模型架构之后,使用一行代码,可以编译和拟 ...

最新文章

  1. 一堆棋子java代码编程_网易2018校招内推编程题-堆棋子-C++实现
  2. java fft 频谱算法_快速傅里叶变换(FFT)算法原理及代码解析
  3. replaceAll的坑
  4. 解决This picacion faied to trt becuse t could, not find or load the Qt platform plugin “windows““问题
  5. 字节跳动开发者工具_FAQ | 字节跳动小游游戏发布常见问题汇总
  6. Java SSM6——SSM整合
  7. 分布式系统中,权限设计实践
  8. VB制作OCX控件的步骤
  9. hibernate--生成正向和逆向工程
  10. c语言 防止sql注入,c#如何防止sql注入?
  11. 深度测评 | 五大主流多端开发框架全面对比
  12. 大学生找工作如何做自我介绍?如何做好自我介绍?
  13. 直播六脉神剑,练好这几招才能行走江湖
  14. pDC 与 GetDC() 区别
  15. Redis的内存碎片
  16. 六自由度方程组 matlab,采用Matlab的六自由度机器人三维运动学仿真_李庆.pdf
  17. 武汉理工大学计算机学院导师联系方式,武汉理工大学计算机学院班主任(班导师)工作条例.doc...
  18. 基于jsp的校园二手物品交易网站
  19. 校园访客登记管理系统设计与实现 java
  20. 欧洲证券监管机构将于2019年前报告ICO监管规则

热门文章

  1. 核心 Android 调节音量的过程
  2. MySQL数据库入门练习100句
  3. 热血屠龙挂机iOS客户端技术支持
  4. jQuery设置元素隐藏
  5. 二维各向同性介质弹性波数值模拟(交错网格有限差分法)
  6. Matlab去除外白边框
  7. 自然语言处理学习——论文分享——A Mutual Information Maximization Perspective of Language Representation Learning
  8. 笔记与总结:高翔《视觉SLAM十四讲》第一讲
  9. nofollow标签如何使用
  10. 在VScode中导入anaconda中已安装好的库