Проверяет знание оптимизации компилятора по сокращению вызовов функций.
Inlining — это замена вызова функции её телом на этапе компиляции, чтобы убрать overhead вызова (push/pop, jump) и дать оптимизатору больше возможностей для дальнейшего упрощения кода. Go-компилятор автоматически inlines небольшие или часто вызываемые функции, если они соответствуют критериям размера и не используют сложные конструкции.
Зачем:
Уменьшение накладных расходов на вызов.
Позволяет оптимизатору объединять контекст и устранять лишние переменные.
Критерии Go:
Размер тела меньше определённого лимита.
Отсутствие рекурсии и сложных control-flow.
Как проверить:
Командой go build -gcflags="-m" компилятор выведет сообщения об inlining.
Риски:
Увеличение размера бинаря (code bloat).
Пример:
func add(a, b int) int { return a + b } // likely inlinedВывод:
Inlining — автоматическая оптимизация, не требующая вмешательства разработчика.