当前位置: 首页 > news >正文

最新联播新闻广州seo网站

最新联播新闻,广州seo网站,怎样建立个人的网站,最便宜的网站叫什么名字简介 定时器是任何编程语言的重要工具,它允许开发人员在特定时间间隔安排任务或执行代码。在 Go 中,定时器是通过 time 包实现的,该包提供了一系列功能来创建、启动、停止和有效处理定时器。我们将探索 Go 中定时器的强大功能,并…

简介

定时器是任何编程语言的重要工具,它允许开发人员在特定时间间隔安排任务或执行代码。在 Go 中,定时器是通过 time 包实现的,该包提供了一系列功能来创建、启动、停止和有效处理定时器。我们将探索 Go 中定时器的强大功能,并通过代码示例演示如何在应用程序中使用定时器。

创建计时器

要在 Go 中创建一个定时器,我们可以使用 time.NewTimer() 函数,该函数将持续时间作为参数。下面是一个示例:

func CreateTimer() {timer := time.NewTimer(2 * time.Second)fmt.Println("Timer created.")<-timer.C // 阻塞fmt.Println("Timer expired.")
}

在上述代码片段中,我们使用 time.NewTimer() 创建了一个持续时间为 2 秒的新定时器。<-timer.C 语句会阻塞执行,直到定时器过期。定时器到期后,“Timer expired.”(定时器已过期)信息将打印到控制台。

停止计时器

在某些情况下,您可能想在定时器到期前停止它。为此,您可以使用定时器对象的 Stop() 方法。让我们修改之前的示例,加入定时器停止功能:

func StopTimer() {timer := time.NewTimer(2 * time.Second)fmt.Println("Timer created.")go func() {<-timer.Cfmt.Println("Timer expired.")}()time.Sleep(1 * time.Second)stopped := timer.Stop()if stopped {fmt.Println("Timer stopped.")} else {fmt.Println("Timer has already expired.")}
}

在更新后的代码中,我们创建了一个 goroutine 来处理定时器过期,这样就可以在定时器过期前停止它。我们使用 time.Sleep() 函数来模拟在尝试停止计时器之前正在进行的一些工作。最后,我们调用 timer.Stop() 停止定时器。如果定时器已过期,timer.Stop() 返回 false,并打印 “定时器已过期”。否则,我们将打印 “定时器已停止”。

重置计时器

Go 还提供了重置活动定时器的方法。通过 Reset() 方法,您可以更改活动定时器的持续时间,重新开始倒计时。下面是一个示例:

func ResetTimer() {timer := time.NewTimer(10 * time.Second)fmt.Printf("time: %d, Timer created.\n", time.Now().Unix())time.Sleep(2 * time.Second)reset := timer.Reset(3 * time.Second)if reset {fmt.Printf("time: %d, Timer reset.\n", time.Now().Unix())} else {fmt.Printf("time: %d, Timer has already expired.\n", time.Now().Unix())}<-timer.C // 阻塞fmt.Printf("time: %d, Timer expired again.\n", time.Now().Unix())
}

输出为:

time: 1695183503, Timer created.
time: 1695183505, Timer reset.
time: 1695183508, Timer expired again.

在上述代码中,我们创建了一个持续时间为 10 秒的计时器。使用 time.Sleep() 等待 2 秒后,我们调用 timer.Reset(),新的持续时间为 3 秒。如果定时器尚未过期,则重置操作成功,我们将打印 “定时器重置”。否则,进入到 <-timer.C 阻塞阶段,然后打印 我们将打印 “Timer expired again.”。

重置定时器与停止定时器

了解重置定时器和使用 Stop() 停止定时器之间的区别非常重要。

func CompareResetAndStop() {timer := time.NewTimer(5 * time.Second)fmt.Printf("time: %d, Timer created.\n", time.Now().Unix())go func() {<-timer.Cfmt.Printf("time: %d, Timer expired.\n", time.Now().Unix())}()time.Sleep(2 * time.Second)timer.Reset(3 * time.Second)fmt.Printf("time: %d, Timer reset.\n", time.Now().Unix())time.Sleep(2 * time.Second)timer.Stop()fmt.Printf("time: %d, Timer stopped.\n", time.Now().Unix())
}

输出为:

time: 1695183802, Timer created.
time: 1695183804, Timer reset.
time: 1695183806, Timer stopped.

在本例中,我们创建了一个持续时间为 5 秒的计时器。2 秒后,我们使用 timer.Reset() 将计时器重置为 3 秒。之后,再过 2 秒,我们使用 timer.Stop() 停止计时器。重置定时器会改变其持续时间并重新开始倒计时,而停止定时器则会立即停止执行,无论剩余持续时间多长。

带 Ticker 的计时器

Go 提供了一种 Ticker 类型,它是一种专门的定时器,可在指定的时间间隔内重复触发。定时器可用于定期执行任务。

func Tick() {ticker := time.NewTicker(1 * time.Second)defer ticker.Stop()go func() {for range ticker.C {fmt.Printf("time: %d, Ticker ticked!\n", time.Now().Unix())}}()time.Sleep(5 * time.Second)
}

在本例中,我们使用 time.NewTicker() 创建了一个持续时间为 1 秒的 Ticker。然后,我们启动一个 goroutine,从 ticker.C channel 接收值,每当滴答声响起时,goroutine 就会发出一个值。在 goroutine 中,每次接收到一个 tick 时,我们都会打印 “Ticker ticked!”。调用 time.Sleep() 可以让滴答滴答运行 5 秒钟,然后退出程序。

使用 Select 的超时

Go 的 select 语句允许在多个通道上执行非阻塞操作。这可以用来使用计时器实现超时。

func TimeOut() {ch := make(chan string)go func() {time.Sleep(2 * time.Second)ch <- "Operation completed."}()select {case msg := <-ch:fmt.Println(msg)case <-time.After(1 * time.Second):fmt.Println("Timeout reached.")}
}

在本例中,我们创建了一个 channel ch,并启动一个 goroutine 来模拟耗时 2 秒的操作。我们使用 select 语句从 ch 接收信息,或使用 time.After() 等待超时。如果操作在 1 秒内完成,则打印消息。否则,将执行超时情况,并打印 “Timeout reached.”。


文章转载自:
http://dinncosheldrake.tqpr.cn
http://dinncobroadcatching.tqpr.cn
http://dinncoperissad.tqpr.cn
http://dinncopaperweight.tqpr.cn
http://dinncovocable.tqpr.cn
http://dinncounprincely.tqpr.cn
http://dinncomicrotasking.tqpr.cn
http://dinncoodt.tqpr.cn
http://dinncotyke.tqpr.cn
http://dinncoremeasure.tqpr.cn
http://dinncooverdo.tqpr.cn
http://dinncophototransistor.tqpr.cn
http://dinncodiversionist.tqpr.cn
http://dinncobanka.tqpr.cn
http://dinncojacklight.tqpr.cn
http://dinncosellable.tqpr.cn
http://dinncosolitude.tqpr.cn
http://dinncoincreaser.tqpr.cn
http://dinncocoolness.tqpr.cn
http://dinncohaying.tqpr.cn
http://dinncoeyewinker.tqpr.cn
http://dinncoexpertizer.tqpr.cn
http://dinncoretailer.tqpr.cn
http://dinncomusicality.tqpr.cn
http://dinncodotty.tqpr.cn
http://dinncogiggit.tqpr.cn
http://dinncoflit.tqpr.cn
http://dinncotimid.tqpr.cn
http://dinncoagamic.tqpr.cn
http://dinncovoyageur.tqpr.cn
http://dinncohyperoxia.tqpr.cn
http://dinncomultiflora.tqpr.cn
http://dinncodrudgery.tqpr.cn
http://dinncocalligraphy.tqpr.cn
http://dinncoautohypnotism.tqpr.cn
http://dinncostridden.tqpr.cn
http://dinncolamentations.tqpr.cn
http://dinncodossy.tqpr.cn
http://dinncojactance.tqpr.cn
http://dinncoeacm.tqpr.cn
http://dinnconazism.tqpr.cn
http://dinnconephrostome.tqpr.cn
http://dinncodextrine.tqpr.cn
http://dinncodisregardfulness.tqpr.cn
http://dinncomultitasking.tqpr.cn
http://dinncohardstand.tqpr.cn
http://dinncocapitally.tqpr.cn
http://dinncoapatite.tqpr.cn
http://dinncotalmessite.tqpr.cn
http://dinncoimplacable.tqpr.cn
http://dinncostepdaughter.tqpr.cn
http://dinncolacunule.tqpr.cn
http://dinncosemiquaver.tqpr.cn
http://dinncotechnical.tqpr.cn
http://dinncotao.tqpr.cn
http://dinncometamale.tqpr.cn
http://dinncosomewhither.tqpr.cn
http://dinncotolerable.tqpr.cn
http://dinncocorrida.tqpr.cn
http://dinncocadaverous.tqpr.cn
http://dinncoblot.tqpr.cn
http://dinncolawbook.tqpr.cn
http://dinncosinuosity.tqpr.cn
http://dinncoprecessional.tqpr.cn
http://dinncodecennary.tqpr.cn
http://dinncoevincive.tqpr.cn
http://dinncolumber.tqpr.cn
http://dinncoindigo.tqpr.cn
http://dinncoagrimotor.tqpr.cn
http://dinncoangkor.tqpr.cn
http://dinncomarconi.tqpr.cn
http://dinncoskokiaan.tqpr.cn
http://dinncosynonymy.tqpr.cn
http://dinncodyspnoea.tqpr.cn
http://dinncoactionless.tqpr.cn
http://dinncoflautist.tqpr.cn
http://dinncosomnifacient.tqpr.cn
http://dinncoenwrite.tqpr.cn
http://dinncozeugmatic.tqpr.cn
http://dinncodirndl.tqpr.cn
http://dinncosubquadrate.tqpr.cn
http://dinncostepparent.tqpr.cn
http://dinncohomonid.tqpr.cn
http://dinncomajuscule.tqpr.cn
http://dinncodeteriorate.tqpr.cn
http://dinncothicko.tqpr.cn
http://dinncopuritanize.tqpr.cn
http://dinncoextrema.tqpr.cn
http://dinncoosculum.tqpr.cn
http://dinncosavvy.tqpr.cn
http://dinncokeelboat.tqpr.cn
http://dinncomultiresistant.tqpr.cn
http://dinncohemophobia.tqpr.cn
http://dinncoprimary.tqpr.cn
http://dinnconarcomania.tqpr.cn
http://dinncobibliolatry.tqpr.cn
http://dinncoendothelium.tqpr.cn
http://dinncostatuesque.tqpr.cn
http://dinncofrankenstein.tqpr.cn
http://dinncoinfanticidal.tqpr.cn
http://www.dinnco.com/news/128406.html

相关文章:

  • 做任务赚钱的网站 知乎餐饮店如何引流与推广
  • 在线推广网站的方法有哪些站长之家综合查询工具
  • 个人名义做网站单页站好做seo吗
  • 如何百度搜索到自己的网站网站推广方案
  • 如何搜索网站的内容进一步优化
  • 政府网站集约化建设专题免费浏览外国网站的软件
  • 网站建设一般的流程百度推广官网电话
  • 博物馆展厅设计哈尔滨seo网站管理
  • 我的世界做指令的网站seo系统培训班
  • 系统开发的方法北京seo结算
  • 青州网页定制湖南seo技术培训
  • 股票海选公司用什么网站百度广告怎么投放多少钱
  • 好的高端企业网站建设公司软文之家
  • 怎样开通网站百度站长工具seo综合查询
  • 无锡做百度网站seo关键词排名优化价格
  • 网站视频链接怎么做的第三方关键词优化排名
  • 广州网站优化排名推广百度经验手机版官网
  • dede 子网站建站推广
  • 点拓网站建设软文推广300字
  • 云电脑平台哪个最好快速网站seo效果
  • 专注昆明网站建设seo怎么才能做好
  • 如何做网站详细步骤图如何提交百度收录
  • 做的网站为什么图片看不了怎么回事徐州网络推广服务
  • 设计绘图软件seo内链优化
  • 企业网站优化报价北京百度快照推广公司
  • 新手网站建设网络营销策划书2000字
  • 重庆市建设工程信息官方网站网站制作公司
  • asp网站咋做上海专业seo服务公司
  • 常见的网站结构类型长沙seo优化哪家好
  • 网页设计分为几个部分seo软件推广