Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Pasar Funciones como Argumentos | Funciones
Introducción a Golang

bookPasar Funciones como Argumentos

Otra característica útil es la capacidad de pasar funciones como argumentos a otras funciones.

Como recordatorio, la sintaxis fundamental de una función con parámetros es la siguiente:

func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
      // Code
      // Optional return statement
}

Utilizamos la siguiente sintaxis para especificar el tipo de dato del parámetro al pasarlo a una función:

func(datatype, datatype, …) return_datatype

La palabra clave func es seguida por los tipos de datos de los parámetros de esa función, separados por comas y entre paréntesis. Además, se especifica el tipo de dato de retorno para la función o conjunto de funciones esperadas, si corresponde.

Un ejemplo puede ayudar a ilustrar este concepto:

index.go

index.go

copy
12345678910111213141516
package 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, se pasa una función llamada nTimes como argumento a la función printFiveTimes. El tipo de dato para el 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).

Ahora, se presenta un ejemplo de una función con valor de retorno:

index.go

index.go

copy
1234567891011121314151617181920
package 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)) }
question mark

¿Cuál será la salida del siguiente programa:

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 6

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

bookPasar Funciones como Argumentos

Desliza para mostrar el menú

Otra característica útil es la capacidad de pasar funciones como argumentos a otras funciones.

Como recordatorio, la sintaxis fundamental de una función con parámetros es la siguiente:

func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
      // Code
      // Optional return statement
}

Utilizamos la siguiente sintaxis para especificar el tipo de dato del parámetro al pasarlo a una función:

func(datatype, datatype, …) return_datatype

La palabra clave func es seguida por los tipos de datos de los parámetros de esa función, separados por comas y entre paréntesis. Además, se especifica el tipo de dato de retorno para la función o conjunto de funciones esperadas, si corresponde.

Un ejemplo puede ayudar a ilustrar este concepto:

index.go

index.go

copy
12345678910111213141516
package 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, se pasa una función llamada nTimes como argumento a la función printFiveTimes. El tipo de dato para el 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).

Ahora, se presenta un ejemplo de una función con valor de retorno:

index.go

index.go

copy
1234567891011121314151617181920
package 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)) }
question mark

¿Cuál será la salida del siguiente programa:

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 6
some-alt