103 lines
2.3 KiB
Markdown
103 lines
2.3 KiB
Markdown
|
---
|
|||
|
title: Go Functions
|
|||
|
localeTitle: Ir funções
|
|||
|
---
|
|||
|
## Ir funções
|
|||
|
|
|||
|
Uma função recebe zero ou mais parâmetros de qualquer tipo, faz alguma lógica com eles e pode retornar um ou mais valores. A sintaxe da função de Golang é:
|
|||
|
|
|||
|
```go
|
|||
|
func sum(parameter1 int64, parameter2 int64) int64 {
|
|||
|
return parameter1+parameter2
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Aqui, o nome da função é `add` . Leva para parâmetros, `parameter1` e `parameter2` do tipo `int64` e retorna outro int64, a soma dos dois parâmetros.
|
|||
|
|
|||
|
### Retorna
|
|||
|
|
|||
|
Depois que um `return` é atingido, a função sai sem executar mais código.
|
|||
|
|
|||
|
```go
|
|||
|
func sum(parameter1 int64, parameter2 int64) int64 {
|
|||
|
return parameter1+parameter2
|
|||
|
// Unreachable code
|
|||
|
fmt.Printf("Don't print me")
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### Chamando uma função
|
|||
|
|
|||
|
A função acima seria chamada assim:
|
|||
|
|
|||
|
```go
|
|||
|
sum(4, 5)
|
|||
|
```
|
|||
|
|
|||
|
O valor dessa expressão é 9.
|
|||
|
|
|||
|
### Omitir tipo de parâmetro
|
|||
|
|
|||
|
Se dois ou mais parâmetros consecutivos forem do mesmo tipo, pode ser indicado apenas uma vez.
|
|||
|
|
|||
|
```go
|
|||
|
function foo(x, y, z int64, name string) {
|
|||
|
fmt.Printf("%d %d %d %s", x, y, z, name)
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Aqui `x` , `y` e `z` são do tipo `int64` e `name` é uma string.
|
|||
|
|
|||
|
### Retornando vários valores
|
|||
|
|
|||
|
Uma função pode retornar zero ou mais valores. Para não retornar nada, omita o tipo de retorno:
|
|||
|
|
|||
|
```go
|
|||
|
function helloWorld() {
|
|||
|
fmt.Printf("Hello world!")
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Para retornar um valor, especifique seu tipo:
|
|||
|
|
|||
|
```go
|
|||
|
function getHelloWorld() string {
|
|||
|
return "Hello world!"
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Para retornar mais de um valor, especifique seus tipos, envolvidos em `()` e separados por vírgulas:
|
|||
|
|
|||
|
```go
|
|||
|
function getHelloWorldAndBestLanguage() (string, string) {
|
|||
|
return "Hello world!", "Golang"
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Para receber esses valores, simplesmente declare as variáveis separadas por vírgulas da seguinte forma:
|
|||
|
|
|||
|
```go
|
|||
|
helloWorld, bestLanguage := getHelloWorldAndBestLanguage()
|
|||
|
// helloWorld == "Hello world!"
|
|||
|
// bestLanguage == "Golang"
|
|||
|
```
|
|||
|
|
|||
|
### Retornos nuas
|
|||
|
|
|||
|
Você pode nomear os tipos de retorno para que você não precise passar a variável para a declaração de retorno:
|
|||
|
|
|||
|
```go
|
|||
|
func duplicate(s string) (first, second string) {
|
|||
|
first = s
|
|||
|
last = s
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func main() {
|
|||
|
fmt.Println(split("Hello world!")) // ("Hello world!", "Hello world!")
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
#### Mais Informações:
|
|||
|
|
|||
|
https://tour.golang.org/basics/4
|