Go言語:関数(クロージャ)

クロージャな話

  • Go言語の関数は値として扱える。
  • Go言語の関数はクロージャとして振る舞う。

試してみた

クロージャのスコープ

スコープは他の言語のそれと同じ。

** 1 1
1
** 1 1
1
** 2 1
2
** 2 2
4
** 3 1
3
** 3 3
27
** 1 1
1
** 2 4
16
** 3 27
7.625597484987e+12
** 1 1
1
** 1 1
1
** 2 1
2
** 2 2
4
** 3 4
81
** 3 81
4.434264882430377e+38
** 1 4.434264882430377e+38
1
** 2 1
2
** 3 2
9

試してみた:演習

この演習に対しての回答。

closureの演習

0 0
1 1
2 1
3 2
4 3
5 5
6 8
7 13
8 21
9 34

フィボナッチだけど、呼び出しごとに値を返せば良い、呼び出しに対してインデックスは与えられない、ということで、できるだけ簡単な実装にしてみている。

switchはまだ出てきてないけど、、、他言語と同じで、breakを書かなくてよい、という文法の理解のみで使用。

数列の0番目と1番目が固定値になるのは、フィボナッチ数 - Wikipediaから定義を拝借。