¿Qué son las funciones como argumentos?
Es posible enviar funciones como argumentos a otras funciones o asociar a una variable. Esto es utilizado en algunos patrones de diseño. Para ello cuando se hace referencia a una función, se tiene que utilizar el tipo func
. De esta manera es posible invocar una función haciendo referencia a la variable o parámetro con el que se asocia.
Ejemplo del uso de funciones como argumentos en Go
package main
import "fmt"
func circulo(radio float64) (area func() float64, perimetro func() float64) {
area = func() float64 {
return 3.1416 * radio * radio
}
perimetro = func() float64 {
return 2 * 3.1416 * radio
}
return
}
func main() {
area, perimetro := circulo(10)
fmt.Println("El area del circulo es", area())
fmt.Println("El perimetro del circulo es", perimetro())
}
El area del circulo es es: 201.0624
El perimetro del ciruclo es: 50.2656
Descripción del ejemple de uso de funciones como argumentos.
En el ejemplo anterior hemos convertido area y perimetro en dos funciones y las hemos retornado desde la función círculo.
Una ves retornadas las podemos invocar de forma indiscriminada, por lo que el cálculo de cada uno de ellas puede estar condicionado a la evaluación de una expresión lógica.