Модульні уроки (1/5)
Підпис і параметри
У Go функції оголошуються за допомогою func. Синтаксис підпису відрізняється
з C/Java: тип іде після назви параметра, розділеного a
простір. Це вибір, який краще читати вголос — натомість "n типу int".
з "int n".
Основний синтаксис
func sum(a int, b int) int {
return a + b
}
func greet(name string) {
fmt.Println("ciao", name)
}Функція без значення, що повертається, просто пропускає тип повернення.
Послідовні параметри одного типу
Якщо кілька послідовних параметрів мають однаковий тип, ви можете оголосити це лише один раз на останньому. Це ідіоматично, і ви побачите це всюди:
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 видимість визначається назвою: ідентифікаторами, які починаються з великою літерою експортуються (видно з інших пакунків), інші є приватними для пакета.
func Sum(a, b int) int { ... } // esportata
func helper() { ... } // privata al packageФункції як цінності
Функції є значеннями першого класу: їх можна призначати, передавати та повернути їх. Ми копнемо глибше в уроці про закриття.
op := sum // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5main та init: дві спеціальні назви
func main()є точкою входу пакетаmain. Без аргументів, немає повертаних значень.func init()викликається автоматично під час запуску пакета (навіть кількох разів, якщо кілька файлів визначають один). Корисно для налаштування; використовуйте його економно.
Спробуйте
Визначте функцію sum(a, b int) int, яка повертає a+b, а потім викличте її в main за допомогою (3, 4).
Показати підказку
Спільний тип: `(a, b int)`. Тип повернення йде ПІСЛЯ дужок.
Рішення доступне після 3 спроб
Визначте greet(name string) (без значення, що повертається), який друкує «ciao <name>».
Показати підказку
Без типу повернення, якщо функція нічого не повертає.
Рішення доступне після 3 спроб
Куди йде тип параметра в Go?
func f(? ?) {}Підведення підсумків
func name(param type, ...) returnType { ... }.- Введіть після імені; послідовні параметри одного типу → оголосити це лише один раз.
- Великі ініціали = експортовано; нижній регістр = приватний для пакета.
- Функції першокласні (призначаються, проходимі).
mainтаinitє зарезервованими іменами зі спеціальною семантикою.