登录
首页 >  Golang >  Go问答

time.afterFunc 的使用

来源:SegmentFault

时间:2023-01-08 20:48:26 306浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《time.afterFunc 的使用》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

import (
        "fmt"
        "time"
)


func main() {
     t := time.AfterFunc(3 * time.Second, func() {
         fmt.Println("done")
     })
     // time.Sleep(4)
     for {
        select {
            case 

上面的代码执行会报错

image.png

想要实现的效果:
按顺序先看到 "done" 再看到 "ok" (并且不想在主线程 time.Sleep)

参考文档:
https://studygolang.com/pkgdoc

image.png

正确答案

time.AfterFunc
返回的
Timer
t
里,
t.C
nil
源码。它不能通过
 来等待到指定时间。

要想知道定时函数执行完了,必须自己主动从定时函数里发信号出来,比如:

package main

import (
        "fmt"
        "time"
)


func main() {
     c := make(chan int)
     time.AfterFunc(3 * time.Second, func() {
         fmt.Println("done")
     c 

到这里,我们也就讲完了《time.afterFunc 的使用》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>