Зарегистрируйтесь, чтобы продолжить обучение

Функции Основы Go

Функции в Go объявляются через ключевое слово func:

func multiply(x int, y int) int {
    return x * y
}

Объявление функции состоит из следующих частей:

  • ключевое слово func

  • название функции multiply

  • входящие аргументы (x int, y int). Тип аргументов пишется после названия переменной. Если несколько аргументов подряд имеют одинаковый тип, то можно написать сокращенно (x, y int)

  • тип возвращаемого значения int

  • тело функции { return x * y }

Функции именуются в camelCase. Если первая буква заглавная, то функция экспортируемая (публичная) и доступна в других пакетах. Функции с маленькой буквы используются только в рамках текущего пакета:

package math

// публичная функция, можно вызвать извне как math.Multiply(5,7)
func Multiply(x int, y int) int {
    ...
}

// приватная функция, извне не вызвать
func divide(x int, y int) int {
    ...
}

Из одной функции можно возвращать несколько значений. Чаще всего это используется для возвращения ошибок:

package math

import "errors"

func divide(x, y int) (int, error) {
    if y == 0 {
        return 0, errors.New("cannot divide on zero")
    }

    return x / y, nil
}

Возвращаемые значения могут быть именованными:

func multiply(x, y int) (res int) {
    res = x * y
    return
}

Использовать именованные возвращаемые аргументы — плохая практика. На это есть несколько причин:

  • увеличенное расстояние между объявлением и использованием переменной ведет к сложности в чтении и понимании кода

  • переменная может быть несколько раз переопределена в теле функции, что приводит к неожиданному поведению

  • пустой return неявно возвращает аргументы

Естественно, код состоит не только из функций: чаще всего используется множество внешних библиотек. Чтобы использовать внешнюю функцию, нужно указать пакет и через . вызвать публичную функцию. Например:

import "fmt"

func myPrint(msg string) {
    // пакет.функция
    fmt.Println(msg)
}

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»