Уроки модуля (1/5)
Подпись и параметры
В Go функции объявляются с помощью func. Синтаксис подписи отличается
из C/Java: тип идет после имени параметра, через разделитель
пространство. Этот выбор лучше читается вслух — вместо этого «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 попыток
Определитеприветствие(строка имени) (без возвращаемого значения), которое печатает «ciao <имя>».
Показать подсказку
Нет типа возвращаемого значения, если функция ничего не возвращает.
Решение доступно после 3 попыток
Где находится тип параметра в Go?
func f(? ?) {}Резюме
func name(param type, ...) returnType { ... }.- Введите после имени; последовательные параметры одного и того же типа → объявите его только один раз.
- Начальная буква в верхнем регистре = экспортировано; строчная = частное для пакета.
- Функции первоклассные (назначаемые, проходимые).
mainиinit— зарезервированные имена со специальной семантикой.