コンテンツにスキップ

Go/package

出典: フリー教科書『ウィキブックス(Wikibooks)』
< Go

Goにおけるpackage(パッケージ)とは、関連するGoのコード(関数、型、変数など)を一つにまとめたものです。Goのプログラムは一つ以上のパッケージから構成されており、パッケージはコードの再利用性整理可読性を高めるための重要な仕組みです。

パッケージの主な特徴と役割は以下の通りです。

  • コードの整理: 関連する機能を持つコードを一つのディレクトリにまとめ、名前空間を提供することで、コードの管理を容易にします。
  • 再利用性: 作成したパッケージは、他のGoプログラムから簡単にインポートして利用できます。これにより、共通の処理を何度も記述する手間が省けます。
  • 名前空間の管理: パッケージごとに独立した名前空間を持つため、異なるパッケージで同じ名前の関数や型を定義しても名前の衝突を避けることができます。
  • カプセル化: パッケージ内で定義された識別子(関数、型、変数など)の公開・非公開を制御できます。大文字で始まる識別子は外部に公開され、小文字で始まる識別子はパッケージ内部でのみ利用可能です。
  • コンパイルの単位: パッケージはコンパイルの単位となります。パッケージ内の複数のソースファイルはまとめてコンパイルされます。

Goのコードファイルは、必ずいずれかのパッケージに所属します。ファイルの先頭で package キーワードを使って、そのファイルが属するパッケージ名を宣言します。

package main // これは main パッケージに属するファイルであることを示す

特別なパッケージとして main パッケージがあります。実行可能なGoプログラムは、必ず main パッケージを含み、その中に main 関数が定義されている必要があります。プログラムはこの main 関数から実行を開始します。

他のパッケージの機能を利用するには、import キーワードを使ってそのパッケージをインポートします。

import "fmt"      // 標準パッケージの fmt をインポート
import "math/rand" // 標準パッケージの math/rand をインポート
import "./mypackage" // 同じプロジェクト内の mypackage をインポート

Goには豊富な標準パッケージが用意されており、ファイル操作 (os)、ネットワーク処理 (net/http)、日付・時刻 (time)、文字列操作 (strings) など、様々な機能を利用できます。また、第三者が作成したパッケージや、自分で作成した独自のパッケージも利用できます。

まとめ

[編集]

Goのパッケージは、効率的で保守性の高いプログラムを開発するための基本的な構成要素です。コードを論理的に分割し、再利用を促進し、名前空間の衝突を防ぐ役割を果たします。