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

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, 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

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 an example of passing a function as an argument?

What does the full code look like for the `nTimes` and `printFiveTimes` functions?

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

Awesome!

Completion rate improved to 1.96

bookPasar 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

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, 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

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