首页 > 代码库 > golang串联编程
golang串联编程
package main
import (
"fmt"
_ "math/rand"
_ "time"
)
type EndPoint func(req interface{}) interface{}
type Middleware func(EndPoint) EndPoint
func Chain(others ...Middleware) Middleware {
return func(e EndPoint) EndPoint {
for i := len(others) - 1; i >= 0; i-- {
e = others[i](e)
}
return e
}
}
func genMiddleware(i int) Middleware {
return func(next EndPoint) EndPoint {
fmt.Println("flag...", i)
return next
}
}
func StartMain() {
var mids []Middleware
for i := 10; i > 0; i-- {
mids = append(mids, genMiddleware(i))
}
mid := Chain(mids...)
e := func(request interface{}) interface{} {
fmt.Println("start...")
return nil
}
finalfun := mid(e)
finalfun(3)
finalfun(3)
}
golang串联编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。