goroutine機制可以方便地實現異步處理
package main
import (
"log"
"time"
"github.com/gin-gonic/gin"
)
func main() {
// 1.創建路由
// 默認使用了2箇中間件Logger(), Recovery()
r := gin.Default()
// 1.異步
r.GET("/long_async", func(c *gin.Context) {
// 需要搞一個副本
copyContext := c.Copy()
// 異步處理
go func() {
time.Sleep(3 * time.Second)
log.Println("異步執行:" + copyContext.Request.URL.Path)
}()
})
// 2.同步
r.GET("/long_sync", func(c *gin.Context) {
time.Sleep(3 * time.Second)
log.Println("同步執行:" + c.Request.URL.Path)
})
r.Run(":8000")
}