Go初心者のパッケージ入門
Go初心者が知っておくべきパッケージの基本
Goではコードを整理するためにパッケージという単位が使われます。パッケージはディレクトリ構造と密接に結びついており、同じディレクトリ内にあるファイルは自動的に同じパッケージに属します。パッケージ名は通常小文字で書き、名前空間として機能します。
パッケージを作る際は、ディレクトリを作成し、その中に.goファイルを置きます。ファイルの先頭に package mypkg と書くことで、そのファイルが属するパッケージを宣言します。これにより、他のファイルから mypkg を参照できるようになります。
packageとimportの使い方
パッケージを利用するには import 文を使います。例えば標準ライブラリの fmt パッケージを使う場合は、
import "fmt"
と書きます。複数のパッケージをインポートする場合は、カンマで区切るか、複数行で書くことができます。import 文はファイルの先頭に置くのが慣例です。
また、別のディレクトリにある自作パッケージをインポートする場合は、モジュールのルートからの相対パスを指定します。例えば github.com/yourname/project/mypkg のように書きます。
エクスポートと大文字のルール
Goでは、名前が大文字で始まる識別子はエクスポートされます。つまり、他のパッケージからアクセス可能になります。逆に小文字で始まる識別子は非公開で、同じパッケージ内でのみ使用できます。
例えば、
func DoSomething() {}
はエクスポートされた関数で、他のパッケージから mypkg.DoSomething() のように呼び出せます。一方、
func doSomething() {}
は非公開で、mypkg 内でのみ使用できます。
モジュールと標準ライブラリの関係
Go 1.11 以降、モジュールという概念が導入されました。モジュールは go.mod ファイルで管理され、依存関係を宣言します。標準ライブラリはモジュールに含まれないため、go.mod に記載する必要はありません。
モジュールを作成するには、プロジェクトルートで go mod init github.com/yourname/project を実行します。これにより go.mod が生成され、以降の go get で外部パッケージを追加できます。
コード整理と名前空間の考え方
大規模なプロジェクトでは、パッケージを適切に分割し、名前空間を明確にすることが重要です。機能ごとにディレクトリを分け、関連する型や関数を同じパッケージにまとめます。
また、パッケージ名はその機能を簡潔に表すようにします。例えば、HTTPハンドラを扱うパッケージは handler、データベースアクセスを扱うパッケージは db などです。こうした命名規則を守ることで、コードの可読性と保守性が向上します。
コメント
コメントを投稿