#はじめに
前回こんな記事を書きました。
https://qiita.com/ko-watanabe/items/875085780d2ad72fe6af
初学者がGoで躓きがちな大文字と小文字表記に関しての話です。
簡単におさらいすると外部パッケージで関数を呼び出す際には大文字で表記しましょうね!
ってお話でした!
でも、ちょっと待ってください・・・
なんで、大文字にすると外部パッケージで呼び出せるように成るんでしょう???
仕組みが気になる。。。
gopherのgifが可愛いので引用させていただきます!
参考:https://qiita.com/nkitgamesake/items/7e45309a180e1a905337
#コンパイラに鍵がある?
こんな記事を発見しました!
Go言語の情報の可視性についてのルールは単純です。名前(トップレベルの型名、関数名、メソッド名、定数名、変数名、構造体のフィールドおよびメソッド名)の先頭一文字が大文字になっていれば、パッケージの利用者側から参照可能となります。すなわち大文字にしなければ、それが定義されているパッケージ内からしか参照できません。このルールはコンパイラによって実施されるため、絶対的なルールとなっています。この外部パッケージから可視状態であることをGo言語の用語で「エクスポートされた(exported)」と言います。
コンパイラによって実施されるため、大文字と小文字で区別することはGo様のいうことは絶対!
・・・みたいな感じらしいですね!
#コンパイラとは
今回扱っているプログラミング言語は『Go』です。
このGo言語で書かれたプログラムを実際にコンピュータに理解させるには機械語に変換が必要です!
そこでプログラムを変換(compile)する、もの(er)を活用します。
これが compile + er = compiler!(コンパイラ)
今回、大文字と小文字の判定はコンパイラで実際にチェックされて、外部パッケージで使って良いのか、悪いのかを判定しているわけですね!
#まとめ
大文字小文字の判定はコンパイラで行われていて、それによって他のファイルで使える名前(public)か使えない名前(private)かを指定しているんですね!
覚えておきましょう!!!