Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Passando Funções como Argumentos | Funções
Introdução ao Golang

bookPassando Funções como Argumentos

Outra característica útil é a capacidade de passar funções como argumentos para outras funções.

Como lembrete, a sintaxe fundamental de uma função com parâmetros é a seguinte:

func minhaFuncao(param1 tipo_de_dado, param2 tipo_de_dado, ...) tipo_de_retorno_opcional {
      // Código
      // Instrução de retorno opcional
}

Usamos a seguinte sintaxe para especificar o tipo de dado do parâmetro ao passá-lo para uma função:

func(tipo_de_dado, tipo_de_dado, …) tipo_de_retorno

A palavra-chave func é seguida pelos tipos de dados dos parâmetros da função, separados por vírgulas e dentro de parênteses. Além disso, especificamos o tipo de dados de retorno para a função esperada ou conjunto de funções, se aplicável.

Um exemplo pode ajudar a ilustrar este conceito:

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

No exemplo acima, passamos uma função chamada nTimes como argumento para a função printFiveTimes. O tipo de dado para o parâmetro show na definição da função printFiveTimes é func(int, string), o que corresponde à definição da função nTimes, ou seja, nTimes(n int, msg string).

Agora, vamos dar uma olhada em um exemplo de uma função com um 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

Qual será o resultado do seguinte programa:

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

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

bookPassando Funções como Argumentos

Deslize para mostrar o menu

Outra característica útil é a capacidade de passar funções como argumentos para outras funções.

Como lembrete, a sintaxe fundamental de uma função com parâmetros é a seguinte:

func minhaFuncao(param1 tipo_de_dado, param2 tipo_de_dado, ...) tipo_de_retorno_opcional {
      // Código
      // Instrução de retorno opcional
}

Usamos a seguinte sintaxe para especificar o tipo de dado do parâmetro ao passá-lo para uma função:

func(tipo_de_dado, tipo_de_dado, …) tipo_de_retorno

A palavra-chave func é seguida pelos tipos de dados dos parâmetros da função, separados por vírgulas e dentro de parênteses. Além disso, especificamos o tipo de dados de retorno para a função esperada ou conjunto de funções, se aplicável.

Um exemplo pode ajudar a ilustrar este conceito:

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

No exemplo acima, passamos uma função chamada nTimes como argumento para a função printFiveTimes. O tipo de dado para o parâmetro show na definição da função printFiveTimes é func(int, string), o que corresponde à definição da função nTimes, ou seja, nTimes(n int, msg string).

Agora, vamos dar uma olhada em um exemplo de uma função com um 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

Qual será o resultado do seguinte programa:

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 6
some-alt