103 lines
2.3 KiB
Markdown
103 lines
2.3 KiB
Markdown
|
---
|
||
|
title: Go Functions
|
||
|
localeTitle: Ir funciones
|
||
|
---
|
||
|
## Ir funciones
|
||
|
|
||
|
Una función toma cero o más parámetros de cualquier tipo, hace algo de lógica con ellos y puede devolver uno o más valores. La sintaxis de la función de Golang es:
|
||
|
|
||
|
```go
|
||
|
func sum(parameter1 int64, parameter2 int64) int64 {
|
||
|
return parameter1+parameter2
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Aquí, el nombre de la función es `add` . Lleva a los parámetros, `parameter1` y `parameter2` de tipo `int64` y devuelve otro int64, la suma de los dos parámetros.
|
||
|
|
||
|
### Regreso
|
||
|
|
||
|
Una `return` se alcanza un `return` , la función sale sin ejecutar más código.
|
||
|
|
||
|
```go
|
||
|
func sum(parameter1 int64, parameter2 int64) int64 {
|
||
|
return parameter1+parameter2
|
||
|
// Unreachable code
|
||
|
fmt.Printf("Don't print me")
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### Llamando a una función
|
||
|
|
||
|
La función anterior se llamaría así:
|
||
|
|
||
|
```go
|
||
|
sum(4, 5)
|
||
|
```
|
||
|
|
||
|
El valor de esta expresión es 9.
|
||
|
|
||
|
### Omitir tipo de parámetro
|
||
|
|
||
|
Si dos o más parámetros consecutivos son del mismo tipo, puede indicarse solo una vez.
|
||
|
|
||
|
```go
|
||
|
function foo(x, y, z int64, name string) {
|
||
|
fmt.Printf("%d %d %d %s", x, y, z, name)
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Aquí `x` , `y` , `z` son de tipo `int64` , y `name` es una cadena.
|
||
|
|
||
|
### Devolviendo múltiples valores
|
||
|
|
||
|
Una función puede devolver cero o más valores. Para no devolver nada, omita el tipo de retorno:
|
||
|
|
||
|
```go
|
||
|
function helloWorld() {
|
||
|
fmt.Printf("Hello world!")
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Para devolver un valor especifique su tipo:
|
||
|
|
||
|
```go
|
||
|
function getHelloWorld() string {
|
||
|
return "Hello world!"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Para devolver más de un valor, especifique sus tipos, envueltos en `()` y separados por comas:
|
||
|
|
||
|
```go
|
||
|
function getHelloWorldAndBestLanguage() (string, string) {
|
||
|
return "Hello world!", "Golang"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Para recibir estos valores, simplemente declare las variables separadas por comas como esta:
|
||
|
|
||
|
```go
|
||
|
helloWorld, bestLanguage := getHelloWorldAndBestLanguage()
|
||
|
// helloWorld == "Hello world!"
|
||
|
// bestLanguage == "Golang"
|
||
|
```
|
||
|
|
||
|
### Devoluciones desnudas
|
||
|
|
||
|
Puede nombrar los tipos de retorno para que no tenga que pasar la variable a la declaración 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!")
|
||
|
}
|
||
|
```
|
||
|
|
||
|
#### Más información:
|
||
|
|
||
|
https://tour.golang.org/basics/4
|