Практика: Функции
Онлайн редактор кода для Go
Здесь вы можете попробовать свои силы в программировании на языке Go. Для этого мы предоставляем вам онлайн редактор кода, в котором вы можете написать свой код и запустить его.
❗️ При обновлении страницы код пропадёт, по этому, сохраните свой код куда-нибудь, если он важный.
Задание 1 — Простые математические утилиты
Задание 1: Простые математические функции
⏱️ Примерное время: 10-15 минутНапиши функцию, которая выполняет простое вычисление и возвращает результат.
Требования:
- функция возвращает одно значение
- используй понятное имя и типы
- протестируй в
mainс разными значениями - красиво выводи результат через
fmt.Printf
Пример для Max(7, 3): Максимум из 7 и 3 = 7
Задание 2 — Функции с несколькими возвращаемыми значениями
Задание 2: Несколько возвращаемых значений
⏱️ Примерное время: 15-20 минутФункция возвращает основной результат + дополнительную информацию.
Требования:
- используй несколько возвращаемых значений
- можно использовать именованные возвращаемые значения (named returns)
- в
mainприсваивай и выводи оба/все значения
Пример для DivMod(17, 5): 17 ÷ 5 = 3 остаток 2
Задание 3 — Изменение через указатели
Задание 3: Изменение значений через указатели
⏱️ Примерное время: 15-20 минутФункция изменяет переданную переменную через указатель.
Требования:
- функция принимает указатель (
*int,*float64,*bool) - меняет значение через
*param - в
mainпокажи значение до и после вызова
Пример:
До: 42
После Double: 84
Задание 4 — Вариадические функции
Задание 4: Функции с переменным числом аргументов
⏱️ Примерное время: 15-20 минутНапиши функцию, которая принимает любое количество аргументов.
Требования:
- используй
...(variadic) - внутри — цикл
for _, v := range nums - обработай случай пустого вызова (0 или "")
Пример: Sum(1,2,3,4) → 10
Задание 5 — defer в действии
Задание 5: Отложенные действия с defer
⏱️ Примерное время: 15-20 минутДобавь логирование входа/выхода функции с помощью defer.
Требования:
- используй
defer fmt.Printf(...) - добавь сообщение в начале функции
- покажи, что defer срабатывает в конце (даже если return раньше)
Пример вывода:
Начало обработки заказа 123
...логика...
Заказ №123 обработан
Задание 6 — Простые замыкания-счётчики
Задание 6: Фабрики счётчиков через замыкания
⏱️ Примерное время: 20-25 минутСоздай функцию, которая возвращает другую функцию-счётчик.
Требования:
- внешняя функция возвращает
func() intилиfunc() string - используй замыкание — переменная внутри внешней функции
- создай 2–3 независимых счётчика и покажи, что они не влияют друг на друга
Пример:
id1() → 1
id1() → 2
id2() → 1000 (независимый)
Задание 7 — Анонимные функции в деле
Задание 7: Анонимные функции и немедленный вызов
⏱️ Примерное время: 15-20 минутИспользуй анонимную функцию прямо в месте вызова.
Требования:
- используй
func(...) {...}()— немедленный вызов - или присвой анонимку переменной и вызови
- сделай всё в
main
Пример:
Квадрат 7 = 49
Задание 8 — Итоговое: Мини-банк с defer и замыканием
Задание 8: Мини-банк (итоговое)
⏱️ Примерное время: 30-40 минутСоздай систему учёта баланса с логами и бонусами.
Требования:
- функция
MakeBankAccount(start float64) func(string, float64) (float64, string)- принимает операцию ("deposit", "withdraw") и сумму
- возвращает новый баланс и сообщение
- используй замыкание для хранения баланса
deferдля логирования каждой операции ("Операция ... выполнена, баланс ...")- в
mainсделай 3–5 операций и покажи историю
Пример вывода:
Депозит 200 → баланс 1200
Списание 50 → баланс 1150
Операция списание выполнена, баланс 1150.00 (от defer)
Функции — это сердце Go. Делай их маленькими, понятными и с чёткой ответственностью.