gin框架中的c.Next()/c.Abort()

package main

import (
  "fmt"
  "github.com/gin-gonic/gin"
)

func func1(c *gin.Context){
  fmt.Println("func1")
}


func func2(c *gin.Context){
  fmt.Println("func2 before")
  c.Next()
  fmt.Println("func2 after")
}

func func3(c *gin.Context){
  fmt.Println("func3")
}


func func4(c *gin.Context){
  fmt.Println("func4")
}

func func5(c *gin.Context){
  fmt.Println("func5")
}

func main(){
  r := gin.Default()

  r.Get("/hello", func(c *gin.Context){})

  shopGroup :- r.Group("/shop". func1, func2)
  shopGroup.Use(func3)
  {
    shopGroup.Get("/index", func4, func5)
  }

  r.Run()
}

/*执行结果
func1
func2 before  # 再往下执行的时候遇到c.Next(),就去执行其它函数,
func3
func4
func5
func2 after  # 直到其它函数都执行完毕后,再返回执行当前函数中剩余的部分
*/

package main

import (
  "fmt"
  "github.com/gin-gonic/gin"
)

func func1(c *gin.Context){
  fmt.Println("func1")
}


func func2(c *gin.Context){
  fmt.Println("func2 before")
  c.Next()
  fmt.Println("func2 after")
}

func func3(c *gin.Context){
  fmt.Println("func3")
  c.Abort()
}


func func4(c *gin.Context){
  fmt.Println("func4")
}

func func5(c *gin.Context){
  fmt.Println("func5")
}

func main(){
  r := gin.Default()

  r.Get("/hello", func(c *gin.Context){})

  shopGroup :- r.Group("/shop". func1, func2)
  shopGroup.Use(func3)
  {
    shopGroup.Get("/index", func4, func5)
  }

  r.Run()
}

/*执行结果
func1
func2 before  # 再往下执行的时候遇到c.Next(),就去执行其它函数,
func3  # func3函数中遇到c.Abort(),就会中断c.Next()
func2 after  # 返回c.Next()函数中执行后续代码

*/
posted @ 2022-03-22 13:31  我在路上回头看  阅读(283)  评论(0编辑  收藏  举报