スキップしてメイン コンテンツに移動

Go初心者のパッケージ入門

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 などです。こうした命名規則を守ることで、コードの可読性と保守性が向上します。

この記事はAIによって作成されました。

コメント