Golang. Функции в качестве параметров и результата

Прошу объяснить мне как это работает на конкретном примере.

// validator проверяет строку на соответствие некоторому условию
// и возвращает результат проверки
type validator func(s string) bool

// and возвращает валидатор, который проверяет, что все
// переданные ему валидаторы вернули true
func and(funcs ...validator) validator {
    // ...
}

Что должно быть в функции and и почему? Хочется понять как такие конструкции работают. Заранее благодарю за помощь.


Ответы (1 шт):

Автор решения: Александр Усольцев
func and(funcs ...validator) validator {
    // ...
    return func(s string) bool {
        for _, f := range funcs {
            if f(s) == false {
                return false
            }
        }
        return true
    }
}
→ Ссылка