Golang goroutine return result when timeout

note..

1. example based on channel

func shouldAbort(timeout time.Duration, ch chan<- bool) {
    time.Sleep(timeout)
    ch <- true
}

func TestMethod() bool {
    ch := make(chan bool, 1)
    go shouldAbort(time.Second, ch)
    time.AfterFunc(2*time.Second, func() {
        fmt.Println("???")
        ch <- false
    })
    return <-ch
}

 

posted @ 2019-12-02 21:39  森淼clover  阅读(146)  评论(0编辑  收藏  举报