Как составить функции в го? - PullRequest
1 голос
/ 20 октября 2019

Я пытаюсь выяснить, как настроить промежуточное ПО, и сейчас у меня есть что-то вроде:

func applyMiddleware(h *Handle) *Handle {
   return a(b(c(h)))
}

Есть ли способ "составить" эти функции, чтобы я мог просто передатьсписок дескрипторов, и он вернет составленную функцию?

1 Ответ

3 голосов
/ 20 октября 2019

использовать ломтик

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...