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

Підпис і параметри

У Go функції оголошуються за допомогою func. Синтаксис підпису відрізняється з C/Java: тип іде після назви параметра, розділеного a простір. Це вибір, який краще читати вголос — натомість "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Завантаження…

Визначте greet(name string) (без значення, що повертається), який друкує «ciao <name>».

Завантаження редактора…
Показати підказку

Без типу повернення, якщо функція нічого не повертає.

Рішення доступне після 3 спроб

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

Куди йде тип параметра в Go?

Go
func f(? ?) {}
Варіанти відповідей

Підведення підсумків

  • func name(param type, ...) returnType { ... }.
  • Введіть після імені; послідовні параметри одного типу → оголосити це лише один раз.
  • Великі ініціали = експортовано; нижній регістр = приватний для пакета.
  • Функції першокласні (призначаються, проходимі).
  • main та init є зарезервованими іменами зі спеціальною семантикою.