Go-function-closures
提供:Dev Guides
Go-関数の閉鎖
Goプログラミング言語は、関数クロージャーとして機能する匿名関数をサポートしています。 無名関数は、関数に名前を渡さずにインラインで定義する場合に使用されます。
この例では、別の関数を返す関数getSequence()を作成しました。 この関数の目的は、上位関数の変数iを閉じてクロージャーを形成することです。 たとえば-
package main
import "fmt"
func getSequence() func() int {
i:=0
return func() int {
i+=1
return i
}
}
func main(){
/*nextNumber is now a function with i as 0*/
nextNumber := getSequence()
/*invoke nextNumber to increase i by 1 and return the same*/
fmt.Println(nextNumber())
fmt.Println(nextNumber())
fmt.Println(nextNumber())
/* create a new sequence and see the result, i is 0 again*/
nextNumber1 := getSequence()
fmt.Println(nextNumber1())
fmt.Println(nextNumber1())
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
1
2
3
1
2