Go は、 無名関数 (anonymous functions) をサポートするため、クロージャ (closures) を作れます。無名関数は、名前をつけずに インラインで関数を定義したい場合に便利です。 |
|
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()) |
関数ごとに個別の状態をもっていることを確認するために、 もう 1 つ新たに作成して試してみてください。 |
newInts := intSeq() fmt.Println(newInts()) } |
$ go run closures.go 1 2 3 1 |
|
関数の最後の機能は、再帰です。 |
Next example: Recursion.