LoginSignup
17
9

More than 3 years have passed since last update.

Golangの大文字と小文字の不思議

Last updated at Posted at 2019-09-19

はじめに

前回こんな記事を書きました。
https://qiita.com/ko-watanabe/items/875085780d2ad72fe6af

初学者がGoで躓きがちな大文字と小文字表記に関しての話です。

簡単におさらいすると外部パッケージで関数を呼び出す際には大文字で表記しましょうね!
ってお話でした!

でも、ちょっと待ってください・・・
なんで、大文字にすると外部パッケージで呼び出せるように成るんでしょう???
仕組みが気になる。。。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_77401_fa94ce08-da06-0dad-60be-68f5f4f9d359.gif

gopherのgifが可愛いので引用させていただきます!
参考:https://qiita.com/nkitgamesake/items/7e45309a180e1a905337

コンパイラに鍵がある?

こんな記事を発見しました!

Go言語の情報の可視性についてのルールは単純です。名前(トップレベルの型名、関数名、メソッド名、定数名、変数名、構造体のフィールドおよびメソッド名)の先頭一文字が大文字になっていれば、パッケージの利用者側から参照可能となります。すなわち大文字にしなければ、それが定義されているパッケージ内からしか参照できません。このルールはコンパイラによって実施されるため、絶対的なルールとなっています。この外部パッケージから可視状態であることをGo言語の用語で「エクスポートされた(exported)」と言います。

コンパイラによって実施されるため、大文字と小文字で区別することはGo様のいうことは絶対!
・・・みたいな感じらしいですね!

コンパイラとは

今回扱っているプログラミング言語は『Go』です。
このGo言語で書かれたプログラムを実際にコンピュータに理解させるには機械語に変換が必要です!
そこでプログラムを変換(compile)する、もの(er)を活用します。

これが compile + er = compiler!(コンパイラ)

今回、大文字と小文字の判定はコンパイラで実際にチェックされて、外部パッケージで使って良いのか、悪いのかを判定しているわけですね!

まとめ

大文字小文字の判定はコンパイラで行われていて、それによって他のファイルで使える名前(public)か使えない名前(private)かを指定しているんですね!
覚えておきましょう!!!

17
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
9