Перейти к основному содержимому
Модуль 3 · Урок 1 из 511/50 в курсе~10 min
Уроки модуля (1/5)

Подпись и параметры

В Go функции объявляются с помощью func. Синтаксис подписи отличается из C/Java: тип идет после имени параметра, через разделитель пространство. Этот выбор лучше читается вслух — вместо этого «n типа int». из «int n».

Основной синтаксис

Go
func sum(a int, b int) int {
    return a + b
}

func greet(name string) {
    fmt.Println("ciao", name)
}

Функция, не имеющая возвращаемого значения, просто опускает тип возвращаемого значения.

Последовательные параметры одного типа

Если несколько последовательных параметров имеют один и тот же тип, вы можете объявить это только один раз в последний раз. Это идиоматично, и вы увидите это повсюду:

Go
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }

Экспортированные и неэкспортированные функции

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

Go
func Sum(a, b int) int { ... }    // esportata
func helper() { ... }              // privata al package

Функции как значения

Функции — это первоклассные значения: их можно назначать, передавать и верните их. Мы углубимся в урок о замыканиях.

Go
op := sum            // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5

main и init: два специальных имени.

  • func main() — это точка входа пакета main. Никаких аргументов, нет возвращаемых значений.
  • func init() вызывается автоматически при запуске пакета (даже при нескольких раз, если несколько файлов определяют один). Полезно для настройки; используйте его экономно.

Попробуйте это

Упражнение#go.m3.l1.e1
Попыток: 0Загрузка…

Определите функцию sum(a, b int) int, которая возвращает a+b, затем вызовите ее в main с помощью (3, 4).

Загрузка редактора…
Показать подсказку

Общий тип: `(a, b int)`. Тип возвращаемого значения указывается ПОСЛЕ круглых скобок.

Решение доступно после 3 попыток

Упражнение#go.m3.l1.e2
Попыток: 0Загрузка…

Определитеприветствие(строка имени) (без возвращаемого значения), которое печатает «ciao <имя>».

Загрузка редактора…
Показать подсказку

Нет типа возвращаемого значения, если функция ничего не возвращает.

Решение доступно после 3 попыток

Quiz#go.m3.l1.e3
Готово

Где находится тип параметра в Go?

Go
func f(? ?) {}
Варианты ответа

Резюме

  • func name(param type, ...) returnType { ... }.
  • Введите после имени; последовательные параметры одного и того же типа → объявите его только один раз.
  • Начальная буква в верхнем регистре = экспортировано; строчная = частное для пакета.
  • Функции первоклассные (назначаемые, проходимые).
  • main и init — зарезервированные имена со специальной семантикой.