Passando Funções como Argumentos
Outro recurso ú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 myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
// Code
// Optional return statement
}
Utiliza-se a seguinte sintaxe para especificar o tipo de dado do parâmetro ao passá-lo para uma função:
func(datatype, datatype, …) return_datatype
A palavra-chave func é seguida pelos tipos de dados separados por vírgula para os parâmetros dessa função entre parênteses. Além disso, especifica-se o tipo de dado de retorno para a função esperada ou conjunto de funções, se aplicável.
Um exemplo pode ajudar a ilustrar esse conceito:
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) }
No exemplo acima, uma função chamada nTimes é passada 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), que corresponde à definição da função nTimes, ou seja, nTimes(n int, msg string).
Agora, segue um exemplo de função com 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)) }
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Passando Funções como Argumentos
Deslize para mostrar o menu
Outro recurso ú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 myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
// Code
// Optional return statement
}
Utiliza-se a seguinte sintaxe para especificar o tipo de dado do parâmetro ao passá-lo para uma função:
func(datatype, datatype, …) return_datatype
A palavra-chave func é seguida pelos tipos de dados separados por vírgula para os parâmetros dessa função entre parênteses. Além disso, especifica-se o tipo de dado de retorno para a função esperada ou conjunto de funções, se aplicável.
Um exemplo pode ajudar a ilustrar esse conceito:
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) }
No exemplo acima, uma função chamada nTimes é passada 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), que corresponde à definição da função nTimes, ou seja, nTimes(n int, msg string).
Agora, segue um exemplo de função com 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)) }
Obrigado pelo seu feedback!