packageとファイル【Go】
packageとは
Golにおけるpackageは、名前空間を分けるための仕組みです。
各package内に宣言された変数や関数は、そのpackageのメンバと言います。
package pacA func FuncA() { fmt.Println("bazz") }
上記で言えば、FuncA()はpacAのメンバになります。
packageは名前空間ですので、importすることで
他のファイルから、pacA.FuncA()の形で参照することができます。
package pacB import "pacA" func FuncB() { pacA.FuncA() }
注意点
main packageが必須
main packageはそのプロジェクトのエントリポイントとなります。 実行ファイルを生成するために、main packageを指定し、 そのプライベートメンバとしてmain関数を指定する必要があります。パブリックメンバ、プライベートメンバ
頭文字が大文字のメンバはパブリックメンバとなり、他packageから参照できます。 頭文字が小文字のメンバはプライベートメンバとなり、他packageから参照できません。循環参照
互いのファイルでimportをすると循環参照によりエラーとなります。1フォルダ1package
各階層には1つのpackage名のみ指定することができます。 ただし、package名に「_test」を指定すれば、異なるpackage名を指定できます。異なる階層の同名package参照
異なる階層にある同名のpackageを参照する場合、 import時にそれぞれ異なる別名を指定する必要があります。
テクニック
参照時の別名指定
import xxx "pacA" とすることで、xxxを別名として指定することができます。package名の省略
import . "pacA" とすることで、パッケージ名を指定せずに、FuncA()と記述することができます。import時の階層指定
1フォルダ1packageのルールがあるため、階層を指定してpackageを参照することができます。