我正在尝试弄清楚如何设置中间件,现在我得到了类似的东西:
func applyMiddleware(h *Handle) *Handle {
return a(b(c(h)))
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以“组合”这些函数,以便我只需传递句柄列表即可返回组合函数?
小智 7
使用切片
https://play.golang.org/p/DrEnGkIEbU3
package main
import (
"fmt"
)
func main() {
fmt.Println(v(v(v(0))))
fmt.Println(compose(v, v, v)(0))
}
func v(i int) int {
return i + 1
}
func compose(manyv ...func(int) int) func(int) int {
return func(i int) int {
for _, v := range manyv {
i = v(i)
}
return i
}
}
Run Code Online (Sandbox Code Playgroud)