Funciones como argumentos

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