Go(Golang)の「パッケージとモジュール」は、コードの構造化と再利用性を高めるための重要な概念です。Goはこの仕組みを非常に明確に設計しており、効率的な依存関係管理やビルドを可能にしています。以下で詳しく説明します。
1. パッケージ(Package)
概要
パッケージは、関連するGoファイルをまとめた単位です。Goのすべてのソースコードは何らかのパッケージに属する必要があります。
パッケージの構成
-
各
.goファイルの先頭にはpackage宣言が必要です。 -
例えば、次のように記述します:
または
特別なパッケージ main
main-
mainパッケージは、実行可能ファイルのエントリポイントを定義するために使われます。 -
mainパッケージ内にはfunc main()が必要です。
パッケージのインポート
他のパッケージを使うには import 文を使用します:
独自パッケージを使用するには、パスを指定します:
2. モジュール(Module)
概要
Go 1.11以降で導入されたモジュールは、複数のパッケージをまとめた単位であり、依存関係管理のための仕組みです。Go Modulesにより、GOPATHの外でも開発が可能になりました。
モジュールの初期化
プロジェクトルートで次のコマンドを実行します:
これにより go.mod ファイルが作成され、モジュール名と依存パッケージの情報が管理されます。
go.modの役割
-
モジュール名(ルートパッケージ名)
-
依存パッケージとそのバージョン
-
必要なGoバージョン
例:
依存関係の管理
依存パッケージの追加やバージョン管理は go get や go mod tidy で行います。
3. パッケージとモジュールの関係
-
モジュールはパッケージの集合です。
-
モジュールのルート配下に複数のパッケージを配置できます。
-
モジュールをまたいでパッケージを利用することで、外部ライブラリやプロジェクト間でコードを再利用できます。
4. まとめ
| 項目 | 説明 |
|---|---|
| パッケージ | 関連するGoソースファイルの論理的なまとまり |
| モジュール | 複数のパッケージをまとめたプロジェクト単位 |
go.mod |
モジュールの依存情報を管理するファイル |
mainパッケージ |
実行可能なプログラムのエントリポイント |
生成日:2025/05/03