init・無名関数 クロージャを少しだけ触る
またまた、久しぶりの更新です。
実際に結構使える、init関数に付いては、かなりオマケ程度にしか書いていないので、ご了承ください。
サンプルコード
結果
解説
無名関数・クロージャはjavaScriptを主に扱っている人には馴染みがあるかもしれませんが、Goでも一応、似たような動きが出来ます。
わざわざ使うようにするかは微妙です。
私には、使い道がイマイチ思いつきません。
クロージャとは
クロージャ(クロージャー、英語: closure)、関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数にて利用可能な機能・概念である。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。
自身が定義された環境において解決することとありますが、javaScriptにおいては動的言語であり、型の縛りがありませんので想定外の型が入り、予想外の動きを見せることがあるので、こう言ったクロージャを採用することがあると思いますが、Goは型のある静的言語です。
上記に示したように使い道はよく分かりません。
clou := clouser("Hello ")
でクロージャ用の関数を(引数:"Hello")で定義しています。
この段階で、自身が定義された環境はstring型の"Hello "を引数としたクロージャ関数の環境を作ったことになりますね。
なので、clouにどんな文字列を引数にしても、頭に"Hello "が付きます。
init関数においては、結果から分かるように、main関数より先に呼び出される関数になります。
iniファイルの読み込みなどで重宝することが多いと思います。
個人的書き置き場
javaScriptが苦手過ぎるので、クロージャに関してもイマイチな理解な為、間違えていたらご指摘頂けると幸いです。
最近仕事では、javaScriptばかりですので、気が向いた時にjavaScriptの事も書けていけたらなと思います。
私事ですが、初めてイラスト教本なるものを買ってみたので、ぜひ読み進んで、絵でも描いていきたいなと思ったり、思わなかったり