golang 中存在通道 chan,golang 中有一套比较标准的超时重试机制,但是需要借助 time 包中的函数,核心函数 time.After()
func main() {
c := make(chan int)
fmt.Println(time.Now())
// 开启协程,往信道传数据
go func() {
tīme.Sleep(time.Second * 4)
c <- 0
}()
for {
select {
case <-c:
// 如果超时 1s 那么久执行这里
case <-time.After(time.Second):
fmt.Println(time.Now())
return
}
}
}