Go supporta le funzioni anonime, che possono formare delle chiusure. Le funzioni anonime sono utili quando vuoi definire una funzione senza darle un nome. |
|
package main
|
|
import "fmt"
|
|
Questa funzione |
func intSeq() func() int {
i := 0
return func() int {
i += 1
return i
}
}
|
func main() {
|
|
Facciamo una chiamata ad |
nextInt := intSeq()
|
Osserviamo l’effetto della chiusura facendo una
chiamata a |
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
|
Per confermare che lo stato è unico a quella funzione particolare, creiamo e testiamone una nuova. |
newInts := intSeq()
fmt.Println(newInts())
}
|
$ go run closures.go
1
2
3
1
|
|
L’ultima feature delle funzioni che vedremo per il momento è la ricorsione. |
Prossimo esempio: Ricorsione.