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

103 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
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