Go Academy · Урок

Основы функций и сигнатуры

Параметры, возвращаемые типы и соглашения о вызове

Урок 1 из 412 шагов

«Основы функций и сигнатуры» — бесплатный урок Go Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

Определение функции

В Go функции определяются с помощью ключевого слова func:

func greet(name string) string {
    return "Hello, " + name
}

Параметры и аргументы

Параметры имеют типы и перечисляются парами name type. Несколько параметров одного типа могут использовать одну общую аннотацию типа:

func add(x, y int) int {
    return x + y
}

func rect(w, h float64) float64 {
    return w * h
}

Функции без возвращаемого значения

Функции, которые не возвращают значение, просто не указывают тип возвращаемого значения. Возврат выполняется неявно, когда выполнение достигает конца функции:

func printBanner(title string) {
    fmt.Println("=====", title, "======")
}

Вызов функций

Вызовите функцию по имени, используя круглые скобки и соответствующие аргументы:

result := add(3, 4)        // 7
fmt.Println(greet("Go"))   // Hello, Go
printBanner("Welcome")

Функции как значения первого класса

В Go функции являются значениями первого класса: их можно присваивать переменным и передавать в качестве аргументов:

apply := func(n int, f func(int) int) int {
    return f(n)
}
double := func(n int) int { return n * 2 }
fmt.Println(apply(5, double)) // 10

Типы функций

Можно определить именованные типы функций для более понятных сигнатур:

type Transform func(int) int

func applyAll(n int, fns []Transform) int {
    for _, f := range fns {
        n = f(n)
    }
    return n
}

Рекурсивные функции

Go поддерживает рекурсию. Учитывайте глубину стека: стеки горутин Go растут динамически, но неограниченная рекурсия всё равно приводит к переполнению стека:

func factorial(n int) int {
    if n <= 1 {
        return 1
    }
    return n * factorial(n-1)
}

Соглашения об именовании функций

Соглашения Go об именовании функций:

  • Используйте MixedCaps для экспортируемых или mixedCaps для неэкспортируемых функций
  • Выбирайте короткие имена, отражающие действие: New, Get, Parse, Write
  • Избегайте GetX для простых геттеров — используйте просто X
  • Логические предикаты: IsValid, HasPrefix

Функция init()

Специальная функция init() автоматически выполняется при загрузке пакета, до main():

  • Не принимает аргументов и ничего не возвращает
  • Пакет может содержать несколько функций init()
  • Используйте её для одноразовой настройки, например регистрации драйверов

Функция и метод

Функция не связана ни с одним типом. У метода есть получатель; это рассматривается в разделе «Структуры и методы». Оба используют ключевое слово func:

// Function
func max(a, b int) int { ... }

// Method
func (c Counter) Value() int { ... }

Быстрая проверка

Может ли функция в Go возвращать несколько значений?

Итоги: основы функций

Функции Go выразительны и гибки:

  • func name(params) returnType { }
  • Параметры одного типа могут использовать одну общую аннотацию типа
  • Функции являются значениями первого класса
  • Определяйте типы функций для повторного использования сигнатур
  • Рекурсия поддерживается; init() выполняется при загрузке пакета

Далее: подробное изучение нескольких возвращаемых значений.

Можно начать бесплатно

Изучай Go с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
51
Уроки
203

Часто задаваемые вопросы

Урок «Основы функций и сигнатуры» бесплатный?

Да — полный текст урока «Основы функций и сигнатуры» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы функций и сигнатуры»?

Параметры, возвращаемые типы и соглашения о вызове Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы функций и сигнатуры»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы функций и сигнатуры
  2. Несколько возвращаемых значений
  3. Функции с переменным числом аргументов
  4. defer, анонимные функции и замыкания
← Назад к Go Academy