Функции так же важны, как и в большинстве языков программирования. Первая функция, с которой вы сталкиваетесь при написании своего первого проекта, — это «основная» функция:

Вы можете указать входы и выходы функций, здесь у нас есть два входа: x и y, оба типа ints. Также указываем тип вывода, тоже типа int:

Хотя в предыдущем примере мы указали только один тип вывода, вы можете вернуть несколько значений из функции Go:

В предыдущих примерах у нас было два входных параметра: x и y, хотя мы явно указывали тип для каждого параметра, есть сокращенный способ сделать это:

Другой тип функций в Go — это Функции с переменным числом аргументов. Какие функции будут принимать произвольное количество целых чисел в качестве аргументов:

Здесь мы берем произвольное количество чисел («числа») типа int, суммируем их и возвращаем эту сумму. Вызов вариационной функции аналогичен вызову других функций, просто у вас есть возможность иметь динамическое количество входных данных для функции:

Третий тип функций в Go — это анонимная функция. Анонимные функции весьма полезны, когда вы хотите определить встроенную функцию в местах, где ее определение с помощью имени не имеет значения.

Вот пример функции, которая возвращает другую функцию: анонимная функция:

Четвертый и последний тип функции, которого я коснусь в этой статье, — это рекурсивная функция. Рекурсивные функции — это функции, которые постоянно вызывают сами себя. Это может закончиться бесконечным циклом, если у вас нет защитного предложения, вызывающего возврат функции. В следующем примере это предложение определяется оператором if. Классический пример, демонстрирующий рекурсию, — вычисление чисел Фибоначчи: