1. パッケージ
Go言語のパッケージは、関連するGoのコード(関数、型、変数など)を一まとめにするための単位です。パッケージはコードの再利用と整理を容易にします。
Goのコードファイルは、必ず特定のパッケージに所属します。所属するパッケージは、ファイルの最初の行でpackage
キーワードを用いて明示します。例えば、package main
はそのファイルがmain
パッケージに属していることを示します。
同じパッケージに属するファイル群は、同じディレクトリに配置されます。そして、パッケージ内のすべてのファイルはパッケージレベルの変数や関数を共有することが可能です。
2. モジュール
次にモジュールについて見ていきましょう。モジュールはGo 1.11で導入され、関連するパッケージの集合を表現する単位となります。モジュールの存在により、パッケージのバージョン管理や依存関係の追跡が簡単になります。
モジュールはgo.mod
ファイルによって定義され、このファイルはモジュールのルートディレクトリに配置されます。このファイルにはモジュール名(通常はリポジトリのURL)とそのモジュールが依存する他のモジュールの特定のバージョンが記載されます。
以下に示すgo.mod
ファイルの例では、モジュール名がgithub.com/myuser/myproject
で、golang.org/x/text
パッケージのバージョンv0.3.0
に依存していることが示されています。
module github.com/myuser/myproject
require golang.org/x/text v0.3.0
モジュールの導入により、Goのプロジェクトは依存関係をより明確に管理でき、異なるバージョンの依存関係を持つ複数のプロジェクトを同時に扱うことが可能となりました。これは、Goのエコシステム全体の安定性と互換性を向上させる大きな役割を果たしています。