103 lines
3.1 KiB
Markdown
103 lines
3.1 KiB
Markdown
---
|
||
title: Go Functions
|
||
localeTitle: Функции Go
|
||
---
|
||
## Функции Go
|
||
|
||
Функция принимает ноль или более параметров любого типа, выполняет некоторую логику с ними и может возвращать одно или несколько значений. Синтаксис функции Голанга:
|
||
|
||
```go
|
||
func sum(parameter1 int64, parameter2 int64) int64 {
|
||
return parameter1+parameter2
|
||
}
|
||
```
|
||
|
||
Здесь имя функции `add` . Он принимает параметры, `parameter1` и `parameter2` типа `int64` и возвращает еще одну int64, сумму двух параметров.
|
||
|
||
### Вернуть
|
||
|
||
По достижении `return` функция выходит без выполнения большего количества кода.
|
||
|
||
```go
|
||
func sum(parameter1 int64, parameter2 int64) int64 {
|
||
return parameter1+parameter2
|
||
// Unreachable code
|
||
fmt.Printf("Don't print me")
|
||
}
|
||
```
|
||
|
||
### Вызов функции
|
||
|
||
Вышеупомянутая функция будет вызвана так:
|
||
|
||
```go
|
||
sum(4, 5)
|
||
```
|
||
|
||
Значение этого выражения равно 9.
|
||
|
||
### Тип параметра Omit
|
||
|
||
Если два или более последовательных параметров одного типа, это может быть указано только один раз.
|
||
|
||
```go
|
||
function foo(x, y, z int64, name string) {
|
||
fmt.Printf("%d %d %d %s", x, y, z, name)
|
||
}
|
||
```
|
||
|
||
Здесь `x` , `y` и `z` имеют тип `int64` , а `name` - это строка.
|
||
|
||
### Возврат нескольких значений
|
||
|
||
Функция может возвращать ноль или более значений. Чтобы ничего не возвращать, опустите возвращаемый тип:
|
||
|
||
```go
|
||
function helloWorld() {
|
||
fmt.Printf("Hello world!")
|
||
}
|
||
```
|
||
|
||
Чтобы вернуть одно значение, укажите его тип:
|
||
|
||
```go
|
||
function getHelloWorld() string {
|
||
return "Hello world!"
|
||
}
|
||
```
|
||
|
||
Чтобы вернуть более одного значения, укажите их типы, завернутые в `()` и разделенные запятыми:
|
||
|
||
```go
|
||
function getHelloWorldAndBestLanguage() (string, string) {
|
||
return "Hello world!", "Golang"
|
||
}
|
||
```
|
||
|
||
Чтобы получить эти значения, просто объявите переменные, разделенные запятыми, следующим образом:
|
||
|
||
```go
|
||
helloWorld, bestLanguage := getHelloWorldAndBestLanguage()
|
||
// helloWorld == "Hello world!"
|
||
// bestLanguage == "Golang"
|
||
```
|
||
|
||
### Голые возвращения
|
||
|
||
Вы можете указать типы возврата, чтобы вам не нужно передавать переменную в оператор return:
|
||
|
||
```go
|
||
func duplicate(s string) (first, second string) {
|
||
first = s
|
||
last = s
|
||
return
|
||
}
|
||
|
||
func main() {
|
||
fmt.Println(split("Hello world!")) // ("Hello world!", "Hello world!")
|
||
}
|
||
```
|
||
|
||
#### Дополнительная информация:
|
||
|
||
https://tour.golang.org/basics/4 |