50 lines
2.4 KiB
Markdown
50 lines
2.4 KiB
Markdown
|
---
|
|||
|
title: Go Functions
|
|||
|
localeTitle: Функции Go
|
|||
|
---
|
|||
|
## Функции Go
|
|||
|
|
|||
|
Функция представляет собой блок кода, который выполняет задачу при ее вызове, так что имя функции идентифицирует ее и используется при вызове функции.
|
|||
|
|
|||
|
Объявление функции начинается с ключевого слова `func` за которым следует имя функции, а затем аргументы функции и, наконец, возвращаемые типы значений. Объявление связывает имя функции с функцией. Имейте в виду, что тип появляется после имени переменной как в аргументах, так и в возвращаемых значениях. Примером объявления функции является следующий
|
|||
|
|
|||
|
```go
|
|||
|
func add(a int, b int) int
|
|||
|
```
|
|||
|
|
|||
|
Функция может иметь 0 или много аргументов в зависимости от желаемой функциональности
|
|||
|
|
|||
|
```go
|
|||
|
func zero() int { /* Function Definition */ }
|
|||
|
func increment(x int) int { /* Function Definition */ }
|
|||
|
func add(x, y int) int { /* Function Definition */ }
|
|||
|
```
|
|||
|
|
|||
|
Go поддерживает возврат нескольких значений. Функция ниже возвращает 2 значения: сумму двух аргументов и разницу между первым и вторым аргументами
|
|||
|
|
|||
|
```go
|
|||
|
func addAndSubtract(x, y int) (int, int) {
|
|||
|
return x + y, x - y
|
|||
|
}
|
|||
|
|
|||
|
addAndSubtract(7, 4) // Returns 11, 3
|
|||
|
```
|
|||
|
|
|||
|
Go также поддерживает присвоение имен возвращаемым значениям
|
|||
|
|
|||
|
```go
|
|||
|
func mulitplyByThreeAndDivideByFive(x int) (product int, quotient int) {
|
|||
|
product = x * 3
|
|||
|
quotient = x / 5
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
mulitplyByThreeAndDivideByFive(20) // Returns 60, 4
|
|||
|
```
|
|||
|
|
|||
|
#### Дополнительная информация:
|
|||
|
|
|||
|
* [Экскурсия по Го](https://tour.golang.org/basics/4)
|
|||
|
* [По примеру](https://gobyexample.com/functions)
|
|||
|
* [Голанская книга](https://www.golang-book.com/books/intro/7)
|
|||
|
* [Спецификация языка программирования Go](https://golang.org/ref/spec#Function_declarations)
|