Как обычно: зависит.
Но сначала немного нюанса:
Вы никогда не должны выполнять синтаксический анализ шаблона (или что-либо еще интересное) в вашей функции main()
. Вместо этого ваша main()
функция должна вызывать методы (или отдельный метод), которые запускают цепочку интересных вещей в вашей программе.
В Go нет глобальных переменных, поэтому на самом деле это не вариант сохранения разбранных шаблонов в глобальной переменной. Ближайший Go имеет глобальные переменные это переменные пакета. Вы можете сохранить ваши проанализированные шаблоны в переменной пакета в пакете main
, но это тоже плохая форма, поскольку ваш пакет main
(за исключением крошечных, тривиальных программ) должен быть просто записью точка, а в остальном почти пусто.
Но теперь, к сути вашего вопроса:
Стоит ли разбирать шаблоны по запросу или за прогон?
А здесь все зависит.
Если у вас есть шаблоны, которые часто меняются (например, во время разработки, когда вы постоянно редактируете свои HTML-файлы), лучше всего один раз на запрос.
Но это гораздо менее эффективно, чем однократный синтаксический анализ, поэтому в работе вы можете захотеть проанализировать шаблоны только при запуске. Затем вы можете хранить шаблоны в переменной пакета или, что лучше, в структуре, которая инициализируется во время выполнения. Но я оставляю это тебе.
Но то, что может быть лучшим, на самом деле является чем-то вроде компромисса между двумя подходами. Лучше всего загружать ваши шаблоны при запуске и периодически перезагружать их, либо автоматически (скажем, каждые 5 минут), либо просматривать вашу файловую систему и перезагружать их всякий раз, когда изменяется представление шаблонов на диске.
Как это сделать, оставлено читателю в качестве упражнения.