Основы функций и сигнатуры
Параметры, возвращаемые типы и соглашения о вызове
«Основы функций и сигнатуры» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Основы функций и сигнатуры
- Несколько возвращаемых значений
- Функции с переменным числом аргументов
- defer, анонимные функции и замыкания