AnyCompiler

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.

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 :=.

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