package main
import (
"github.com/gin-gonic/gin"
"time"
)
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
print()
select {
case <-time.After(5 * time.Second):
print()
case <-c.Request.Context().Done(): // 当请求方在请求发起3秒后取消请求,会释放c.Request.Context().Done(),而不会释放case <-c.Done()的channel
print()
}
})
_ = r.Run() // listen and serve on 0.0.0.0:8080
}
所以,若gin的context要往下传,要想起到cancal的效果,就要使用c.Request.Context(),而不是c