|
Go podporuje anonymni funkce, které mohou výtvářet uzávěry. Anonymní funkce jsou užitečné když chcete definovat funkci uvnitř funkce bez nutnosti ji pojmenovávat. |
|
package main
|
|
import "fmt"
|
|
|
Tato funkce |
func intSekv() func() int {
i := 0
return func() int {
i++
return i
}
}
|
func main() {
|
|
|
Voláme |
dalsiInt := intSekv()
|
|
Všimněte si efektu uzávěry během několika volání
|
fmt.Println(dalsiInt())
fmt.Println(dalsiInt())
fmt.Println(dalsiInt())
|
|
Pro ověření že stav je unikátní k té které funkci, vytvoříme a otestujeme jednu novou. |
noveInty := intSekv()
fmt.Println(noveInty())
}
|
$ go run closures.go
1
2
3
1
|
|
|
Poslední vlastostí funkcí které se pro teď podíváme je rekurze. |
Další příklad: Rekurze.