Pasar Funciones como Argumentos
Otra característica útil es la posibilidad de pasar funciones como argumentos a otras funciones.
Como recordatorio, la sintaxis fundamental de una función con parámetros es la siguiente:
func miFunc(param1 tipo_dato, param2 tipo_dato, ...) tipo_de_retorno_opcional {
// Código
// Declaración de retorno opcional
}
Utilizamos la siguiente sintaxis para especificar el tipo de datos del parámetro al pasarlo a una función:
func(tipo_dato, tipo_dato, ...) devolver_tipo_dato
La palabra clave func
va seguida de tipos de datos separados por comas para los parámetros de esa función entre paréntesis. Además, se especifica el tipo de datos de retorno de la función o conjunto de funciones esperadas, si procede.
Un ejemplo puede ayudar a ilustrar este concepto:
index.go
12345678910111213141516package main import "fmt" func nTimes(n int, msg string) { for i := 0; i < n; i++ { fmt.Println(msg) } } func printFiveTimes(msg string, show func(int, string)) { show(5, "Hello World") } func main() { printFiveTimes("HelloWorld", nTimes) }
En el ejemplo anterior, pasamos una función llamada nTimes
como argumento a la función printFiveTimes
. El tipo de datos del parámetro show
en la definición de la función printFiveTimes
es func(int, string)
, que corresponde a la definición de la función nTimes
, es decir, nTimes(n int, msg string)
.
Veamos ahora un ejemplo de función con valor de retorno:
index.go
1234567891011121314151617181920package main import "fmt" // A factorial is the product of all the numbers from 1 up till n // For-example factorial of 5 is 1x2x3x4x5, which is 120 func factorial(n int) int { var result int = 1; for i := 2; i <= n; i++ { result *= i } return result } func eval(n int, oper func(int) int) int { return oper(n) } func main() { fmt.Println(eval(5, factorial)) }
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 1.96
Pasar Funciones como Argumentos
Desliza para mostrar el menú
Otra característica útil es la posibilidad de pasar funciones como argumentos a otras funciones.
Como recordatorio, la sintaxis fundamental de una función con parámetros es la siguiente:
func miFunc(param1 tipo_dato, param2 tipo_dato, ...) tipo_de_retorno_opcional {
// Código
// Declaración de retorno opcional
}
Utilizamos la siguiente sintaxis para especificar el tipo de datos del parámetro al pasarlo a una función:
func(tipo_dato, tipo_dato, ...) devolver_tipo_dato
La palabra clave func
va seguida de tipos de datos separados por comas para los parámetros de esa función entre paréntesis. Además, se especifica el tipo de datos de retorno de la función o conjunto de funciones esperadas, si procede.
Un ejemplo puede ayudar a ilustrar este concepto:
index.go
12345678910111213141516package main import "fmt" func nTimes(n int, msg string) { for i := 0; i < n; i++ { fmt.Println(msg) } } func printFiveTimes(msg string, show func(int, string)) { show(5, "Hello World") } func main() { printFiveTimes("HelloWorld", nTimes) }
En el ejemplo anterior, pasamos una función llamada nTimes
como argumento a la función printFiveTimes
. El tipo de datos del parámetro show
en la definición de la función printFiveTimes
es func(int, string)
, que corresponde a la definición de la función nTimes
, es decir, nTimes(n int, msg string)
.
Veamos ahora un ejemplo de función con valor de retorno:
index.go
1234567891011121314151617181920package main import "fmt" // A factorial is the product of all the numbers from 1 up till n // For-example factorial of 5 is 1x2x3x4x5, which is 120 func factorial(n int) int { var result int = 1; for i := 2; i <= n; i++ { result *= i } return result } func eval(n int, oper func(int) int) int { return oper(n) } func main() { fmt.Println(eval(5, factorial)) }
¡Gracias por tus comentarios!