freeCodeCamp/guide/russian/go/functions/index.md

103 lines
3.1 KiB
Markdown
Raw Normal View History

2018-10-12 20:00:59 +00:00
---
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