Funciones
Una función de Go puede devolver más de un valor directamente — sin envolverlos primero en una tupla o un objeto. Esto se usa constantemente en toda la librería estándar de Go, sobre todo para devolver un resultado junto con un error.
main.go
Pruébalo tú mismo →package main
import "fmt"
func divide(a, b int) (int, int) {
return a / b, a % b
}
func main() {
quotient, remainder := divide(17, 5)
fmt.Println(quotient, remainder)
}Output
3 2
Múltiples valores de retorno en la práctica
Como los múltiples valores de retorno están integrados en el propio lenguaje, una función como minMax de abajo puede devolver tanto el número más pequeño como el más grande de un slice en una sola llamada, y quien la llama simplemente desempaqueta ambos con :=.
main.go
Pruébalo tú mismo →package main
import "fmt"
func minMax(numbers []int) (int, int) {
min, max := numbers[0], numbers[0]
for _, n := range numbers {
if n < min {
min = n
}
if n > max {
max = n
}
}
return min, max
}
func main() {
low, high := minMax([]int{4, 8, 15, 16, 23, 42})
fmt.Println(low, high)
}Output
4 42
Siguiente: control de flujo — if/else, y la única palabra clave de bucle de Go.
Practice exercise
Escribe una función multiply(a, b int) int que devuelva a * b, luego imprime multiply(6, 7).