timeout
package main
import (
"context"
"fmt"
"time"
)
func main() {
fmt.Println(time.Now())
xiao, cancelFunc := context.WithTimeout(context.TODO(), 5*time.Second)
defer cancelFunc()
fmt.Println(time.Now(), "nihao")
done := xiao.Done()
<-done
fmt.Println(time.Now(), "end")
}
deadline
package main
import (
"context"
"fmt"
"time"
)
func main() {
fmt.Println(time.Now())
deadline, cancelFunc := context.WithDeadline(context.TODO(), time.Now().Add(time.Second*5))
cancelFunc()
fmt.Println(time.Now(), "nihao")
done := deadline.Done()
<-done
fmt.Println(time.Now(), "end")
}