当前位置: 首页 > news >正文

网站站点层叠样式怎么做自己做的html网页怎么发布

网站站点层叠样式怎么做,自己做的html网页怎么发布,沈阳关键词seo排名,商贸有限公司中间件 参考#xff1a;https://learnku.com/articles/66234 结构 中间件是函数中间件函数被放在调用链上调用链的末尾是路由path对应的函数 执行过程 net/http包调用到gin的serverHTTP 参考#xff1a;go/pkg/mod/github.com/gin-gonic/ginv1.7.7/gin.go:506 通过path找到…中间件 参考https://learnku.com/articles/66234 结构 中间件是函数中间件函数被放在调用链上调用链的末尾是路由path对应的函数 执行过程 net/http包调用到gin的serverHTTP 参考go/pkg/mod/github.com/gin-gonic/ginv1.7.7/gin.go:506 通过path找到路由对应的处理链赋值给context 参考go/pkg/mod/github.com/gin-gonic/ginv1.7.7/gin.go:553 执行c.next()启动链条 问题中间件函数中为啥要调用next不调用能继续执行完后面的中间件吗 参考https://blog.dianduidian.com/post/gin-%E4%B8%AD%E9%97%B4%E4%BB%B6next%E6%96%B9%E6%B3%95%E5%8E%9F%E7%90%86%E8%A7%A3%E6%9E%90/ 可以即使中间件没有调用next函数那么后续中间件和handles也会执行中间件中调用next函数会先执行后续中间件然后回到这个中间件继续执行next函数之后的代码 参考/Users/didi/go/pkg/mod/github.com/gin-gonic/ginv1.7.7/context.go:165 这里的c.index是一个共用的值在c.handlers[c.index](c)执行的时候可能会变所以虽然在中间件中有调用next函数但是中间价并不会重复执行 提前结束不能使用return要使用abort abortc.index abortIndex 代码参考 package mainimport (encoding/jsonfmt )/**** 上下文*/// Context 上下文 type Context struct {Keys map[string]interface{}handles HandleChainindex int }type HandleChain []func(ctx *Context)func (c *Context) Render(resultCode int, data interface{}) {d, _ : json.Marshal(data)fmt.Println(resultCode:, resultCode, , data:, string(d)) }func (c *Context) Next() {c.indexfor c.index len(c.handles) {c.handles[c.index](c)c.index} }func (c *Context) reset() {c.index -1 }/** 路由*/// router 路由 type router struct {Handlers map[string]HandleChain }type Group struct {Handles HandleChain }func (r *router) RegisterRoute(url string, f func(*Context), group Group) () {if r.Handlers nil {r.Handlers make(map[string]HandleChain)}r.Handlers[url] append(r.Handlers[url], group.Handles...)r.Handlers[url] append(r.Handlers[url], f) }func (g *Group) Use(f func(*Context)) {g.Handles append(g.Handles, f) }func (r *router) Run(url string, c *Context) () {c.handles r.Handlers[url]c.reset()c.Next() }/** 业务代码*/// PlusController 加法 func PlusController(c *Context) {a : c.Keys[a].(int)b : c.Keys[b].(int)c.Render(200, plus(a, b)) }// plus 加法函数 func plus(a, b int) int {return a b }// MultiController 乘法 func MultiController(c *Context) {a : c.Keys[a].(int)b : c.Keys[b].(int)c.Render(200, multi(a, b)) }// multi 加法函数 func multi(a, b int) int {return a * b }/** 主函数*/func main() {r : router{}group1 : Group{Handles: HandleChain{func(ctx *Context) {fmt.Println(testMiddle1)},func(ctx *Context) {ctx.Next()fmt.Println(testMiddle2)},}}group2 : Group{Handles: HandleChain{func(ctx *Context) {fmt.Println(testMiddle3)ctx.Next()fmt.Println(testMiddle4)},}}r.RegisterRoute(*, MultiController,group1)r.RegisterRoute(, PlusController,group2)fmt.Println(----------)r.Run(*, Context{Keys: map[string]interface{}{a: 34, b: 245}})fmt.Println(----------)r.Run(, Context{Keys: map[string]interface{}{a: 34, b: 245}}) }
http://www.pierceye.com/news/56462/

相关文章:

  • 凯里市网站建设网站怎么做防360拦截
  • 设计网站官网入口2003建网站
  • 昌邑做网站的公司书店商城网站建设方案
  • 苏州要服务网站建设网站建设制作后报告
  • 企业站模板明细php网站开发技术课程
  • 包装设计效果图直通车优化推广
  • 有专门为个人网站做推广的吗怎么修改网站模板
  • 网站建设企业需要准备资料360免费建站为什么注册不了
  • 济南网站seo厂家博客自助建站
  • 河南建设168工程网官方网站泰安招聘信息最新招聘2023
  • 网站设计哪里公司好网站开发工程师就业形势
  • 长沙品牌网站建设实力强做网赌网站得多少钱
  • 河南宏业建设管理有限公司网站软件开发从入门到精通
  • 中山网站建设优化效果图制作流程
  • 企业平台网站建设流行网站开发工具
  • 苏州最大的网站建设公司包装公司logo设计
  • 内设网站金昌做网站
  • 给公司做的东西放到自己网站上视频发布到哪些平台可以赚钱
  • 记事本做网站改变图片大小建设一个大型网站需要多少钱
  • 凌云县城乡建设局网站网站怎么防止黑客攻击
  • 衡水网站设计公司哪家好手机怎么制作软件教程
  • 网站设计专业建站公司网站支付宝接口付费
  • 企业建设网站的案例php网站后台登陆不上
  • 盈科互动网站建设制作公司企业服务公司排名
  • 淘宝上的网站怎么做做网站mfdos
  • 井冈山网站建设互联网上市公司排名
  • 建设建材网站的目的做网站一定要用服务器吗
  • 域名与网站建设wordpress子主题安全
  • 黄冈建设信息网站深圳建筑行业招聘网
  • 做公司网站可以抄别人的吗公司网站设计哪家公司好