Я наткнулся на функцию, которая определяет свои собственные типы запросов и ответов.
func doSomething() {
type request struct {
resourceID string
}
type response struct {
resourceContents *Data
}
request := initializeRequest()
result := dispatchRequest(request)
...
}
Я думаю, что это имеет большое преимущество в документировании структуры запроса и ответа прямо в теле функции. Удобство этого особенно очевидно, когда много таких функций находятся в одном файле, и все они имеют разные типы для своих структур запросов и ответов: определение типов вне функции означает, что я должен называть их по-разному.
Однако меня беспокоит стоимость этого: намного ли дороже иметь вызов функции, объявляющий свой собственный тип, по сравнению с объявлением этого типа в области пакета?
Кроме того, является ли этот подход идиоматичным?