Как уменьшить возвратность типа детализации - PullRequest
0 голосов
/ 14 марта 2020

У меня есть это:

type ret = func(http.ResponseWriter, martini.Params, *http.Request);

func VerifyParam(paramName string, validators... func()) ret {
    return func(res http.ResponseWriter, params martini.Params, req *http.Request) {
        // ... 
    }
}

Жаль, что я должен объявить тип возвращаемого значения, даже если тип возвращаемого значения прямо здесь, есть ли способ не повторяться с типом возвращаемого значения декларация?

1 Ответ

2 голосов
/ 14 марта 2020

Вы говорите, что не хотите «повторяться с объявлением типа», но часть после return не является объявлением типа; это начало литерала функции.

Если вы хотите литерал функции (или функцию или метод, определенный на уровне пакета), вам нужно указать аргументы, их типы и тип возвращаемого значения. Обойти это невозможно.

Если вы можете express вашу функцию в результате вычислений, то вы можете полагаться на вывод типа. Например, если у вас есть функция, которая возвращает http-обработчик martini, вы можете return myMartiniHandler(123) без каких-либо типов. Это будет исключительный случай, поскольку большинство обработчиков не просто повторно используют существующий код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...