Passaggio di Funzioni come Argomenti
Un'altra funzionalità utile è la possibilità di passare funzioni come argomenti ad altre funzioni.
Come promemoria, la sintassi fondamentale di una funzione con parametri è la seguente:
func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
// Code
// Optional return statement
}
Utilizziamo la seguente sintassi per specificare il tipo di dato del parametro quando lo passiamo a una funzione:
func(datatype, datatype, …) return_datatype
La parola chiave func è seguita dai tipi di dato dei parametri separati da virgola tra parentesi. Inoltre, si specifica il tipo di dato restituito dalla funzione attesa o dall'insieme di funzioni, se applicabile.
Un esempio può aiutare a illustrare questo concetto:
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) }
Nell'esempio sopra, una funzione chiamata nTimes viene passata come argomento alla funzione printFiveTimes. Il tipo di dato per il parametro show nella definizione della funzione printFiveTimes è func(int, string), che corrisponde alla definizione della funzione nTimes, ovvero nTimes(n int, msg string).
Ora, si consideri un esempio di funzione con valore di ritorno:
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)) }
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Passaggio di Funzioni come Argomenti
Scorri per mostrare il menu
Un'altra funzionalità utile è la possibilità di passare funzioni come argomenti ad altre funzioni.
Come promemoria, la sintassi fondamentale di una funzione con parametri è la seguente:
func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
// Code
// Optional return statement
}
Utilizziamo la seguente sintassi per specificare il tipo di dato del parametro quando lo passiamo a una funzione:
func(datatype, datatype, …) return_datatype
La parola chiave func è seguita dai tipi di dato dei parametri separati da virgola tra parentesi. Inoltre, si specifica il tipo di dato restituito dalla funzione attesa o dall'insieme di funzioni, se applicabile.
Un esempio può aiutare a illustrare questo concetto:
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) }
Nell'esempio sopra, una funzione chiamata nTimes viene passata come argomento alla funzione printFiveTimes. Il tipo di dato per il parametro show nella definizione della funzione printFiveTimes è func(int, string), che corrisponde alla definizione della funzione nTimes, ovvero nTimes(n int, msg string).
Ora, si consideri un esempio di funzione con valore di ritorno:
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)) }
Grazie per i tuoi commenti!