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

Suggested prompts:

Can you show me the example with a return value?

Can you explain how to define a function type with a return value?

What are some common use cases for passing functions as arguments?

Awesome!

Completion rate improved to 1.96

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