closure とは
- 関数オブジェクトの1つ.
- 引数以外の変数を実行時の環境ではなく,closure が定義されている環境(静的スコープ)において解決することを特徴とする.
closure のメリット
- closure を高階関数の引数に渡して,記述の簡素化や高階関数の外側の状態の参照が可能になる.
- closure は遅延評価される(呼び出されるまで何も実行しない)ので,制御構造の定義に用いることができる.
Go の関数は closure
- closure は closure 自身の外部から変数を参照する関数値のことであり,
- closure は参照された変数へアクセスして変えることができる.
- その意味で,closure はその変数へ bind されている.
Go における closure としての無名関数の特徴
- closure から参照されたローカル変数は,関数内のローカル変数とは別物になりclosure の変数になる.
- closure が何らかの形で参照される限り closure の変数も破棄されない.