[БЕЗ СЛОВ] В прошлом видео мы познакомились с базовыми операциями-шаблонами, как вообще экспаундить шаблон. Это хорошо, что мы можем передать туда любые структурированные данные, целые структуры. Можем ли мы вызывать методы у этих структур? Это было бы очень удобно. Да, можем. Стандартный шаблонизатор Go позволяет такие операции. Давайте рассмотрим следующий код. Создадим шаблон из файла method.html, добавим туда юзеров и выполним этот шаблон. Чем это отличается от того кода, что мы видели? Отличается это тем, что у пользователя есть метод PrintActive(). Она принимает на вход пользователя, то есть метод пользователя, и возвращает строку. Если пользователь неактивен, мы возвращаем пустую строку, иначе мы говорим, что пользователь с таким именем активен. Как теперь вызвать этот метод? Рассмотрим шаблон. Итерируемся по пользователям, говорим его имя и указываем метод, который нужно вызвать. В данном случае это PrintActive(). Теперь давайте запустим и посмотрим, что получается. [БЕЗ СЛОВ] Итак, отлично. Vasily и его метод говорит, что этот пользователь активен, и Dmitry тоже, что пользователь активен. У Ivan'а никакой активности нет. Это хорошо. Вызывать функции у структур — это хорошо и полезно, но иногда хочется иметь какие-то общие методы, которые просто, например, будут иметь возможность работать с любыми данными, например, с int'ами, или ещё с чем-нибудь. В данном случае мы прокидываем в структуру обособленные функции, которые уже не являются методами структуры. Вот, например, функция IsUserOdd(). Она говорит, является ли идентификатор этого пользователя нечётным числом. Это не метод структуры, он просто принимает эту структуру на вход. Ну и возвращает какое-то булевое значение. Теперь мы создаём карту функции, которую мы хотим прокинуть в шаблонизатор. И при создании шаблонизатора мы вот здесь указываем, что, пожалуйста, используй вот эти вот функции. Переобъявлять функции потом нельзя. Ну и парсим сам шаблон пользователя и выполнение уже шаблона. Теперь, как выглядит сам шаблон? Сам шаблон выглядит вот так: мы итерируемся по пользователю, выводим его имя, и теперь мы вызываем функцию. То есть if OddUser. OddUser — это как раз та функция, которую мы прокинули в шаблон. Точка. Точка — это текущий элемент итерации, то есть текущий объект User'а. И если условие истинно, то мы вводим какой-то текст. Итак. [БЕЗ СЛОВ] Запустили сервер. Выводим. Итак, отлично. Vasily, id is odd. Ivan — ничего не написано, потому что у него id 2. Это чётное число. И Dmitry, у которого 3 — это тоже нечётное число. Таким образом, можно опрокидывать функции произвольные прямо в шаблон.