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

Suggested prompts:

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

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