Go は無名関数をサポートしている。 無名関数を使ってクロージャを作れる。 無名関数は名前を付けずにインラインで関数を定義でき、便利である。 |
|
![]() ![]() package main
|
|
import "fmt"
|
|
この関数 |
func intSeq() func() int {
i := 0
return func() int {
i++
return i
}
}
|
|
func main() {
|
nextInt := intSeq()
|
|
|
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
|
関数ごとに状態が独立であることを確認するため、新しいクロージャを作ってみよう。 |
newInts := intSeq()
fmt.Println(newInts())
}
|
$ go run closures.go
1
2
3
1
|
|
関数の特徴をここまで見てきたが、最後には再帰を紹介する。 |
次の例:Recursion