Типы являются концепцией времени компиляции, и их область действия (как правило) не влияет на скорость выполнения, так как код, который генерирует компилятор в этих случаях, не обращает внимания на исходный тип (подробнее о Стирание и повторение типов) ), с отражением, являющимся выбросом, но у вас здесь нет отражения.
Тем не менее, я нахожу этот код немного подозрительным:
request := initializeRequest()
Где определено initializeRequest
? Он должен знать о типе request
, поэтому я предполагаю, что он также является внутренним для функции? В противном случае код не скомпилируется. Эти соображения ограничивают полезность функционально-локальных структур во многих случаях, но если у вас все есть локально, я думаю, что это хорошая практика - максимально скрывать типы.
В более масштабных программах вопрос тестирования также вступит в игру. Как вы тестируете типы и функции, работающие с ними, если они скрыты в области видимости?