Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Passaggio di Funzioni come Argomenti | Funzioni
Introduzione a Golang

bookPassaggio 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

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

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

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

Quale sarà l'output del seguente programma:

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

bookPassaggio 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

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

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

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

Quale sarà l'output del seguente programma:

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 6
some-alt