コンテンツにスキップ

Go/import

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

Goにおける import は、他のパッケージで定義されたコード(関数、型、変数、定数など)を現在のGoのソースコードファイルで使用できるようにするためのキーワードです。Goのプログラムは通常、複数のパッケージから構成されており、import 宣言を通じてこれらのパッケージの機能を利用します。

import の主な役割は以下の通りです。

  • コードの再利用: 既に作成され、テスト済みのパッケージを再利用することで、開発効率を高め、コードの重複を避けることができます。
  • 機能の拡張: 標準ライブラリやサードパーティ製のパッケージをインポートすることで、ファイル操作、ネットワーク処理、データ構造操作など、様々な機能を手軽に利用できます。
  • 名前空間の管理: インポートされたパッケージの名前空間を通じて、そのパッケージ内の識別子にアクセスします。これにより、異なるパッケージで同じ名前の識別子が定義されていても、名前の衝突を避けることができます。

import の基本的な構文

[編集]

最も一般的な import の記述方法は、インポートしたいパッケージのパスをダブルクォーテーション " で囲んで指定する方法です。

import "fmt"           // 標準パッケージの fmt をインポート
import "net/http"      // 標準パッケージの net/http をインポート
import "./mypackage"    // 同じプロジェクト内の相対パスで指定された mypackage をインポート
import "github.com/gin-gonic/gin" // サードパーティ製の gin パッケージをインポート

import の様々な形式

[編集]
  • 基本的なインポート: 上記の例のように、パッケージのパスをそのまま記述します。インポートしたパッケージ内の識別子には、パッケージ名にドット . を付けてアクセスします(例: fmt.Println()http.HandleFunc())。
  • 名前付きインポート (Named Import): インポートするパッケージに別の名前(エイリアス)を付けて参照できます。パッケージ名が短すぎる場合や、他のパッケージと名前が衝突する場合などに便利です。
   import f "fmt"
   import g "github.com/gin-gonic/gin"

   func main() {
       f.Println("Hello")
       router := g.Default()
       // ...
   }
  • ドットインポート (Dot Import): パッケージ名の代わりにドット . を使用すると、インポートしたパッケージの識別子をパッケージ名を付けずに直接参照できるようになります。しかし、名前の衝突のリスクが高まるため、一般的には推奨されません。主に、テストコードなどで限定的に使用されることがあります。
   import . "fmt"

   func main() {
       Println("Hello") // fmt.Println() のようにパッケージ名を付けずに直接呼び出せる
   }
  • ブランクインポート (Blank Import): パッケージ名の前にアンダースコア _ を記述すると、そのパッケージはインポートされますが、パッケージ内の識別子は直接使用できません。これは、パッケージの init 関数を実行するためだけにインポートする場合などに使用されます。例えば、特定のドライバを登録する処理などが init 関数内で行われるパッケージで利用されます。
   import _ "image/jpeg" // JPEG形式の画像を扱うための初期化処理を実行

パッケージのパス

[編集]

import で指定するパッケージのパスは、そのパッケージの場所を示します。Goのパッケージパスは、通常以下のいずれかの形式を取ります。

  • 標準パッケージ: Go言語に標準で付属しているパッケージです。短い名前で指定します(例: "fmt", "os", "net/http")。
  • 相対パス: 現在のパッケージからの相対的な位置を指定します。通常、同じプロジェクト内の別のパッケージをインポートする際に使用します(例: "./mypackage", "../utils")。
  • 絶対パス (Go Modules): Go Modules を使用している場合、通常はリポジトリのパスとパッケージのパスを組み合わせた形式になります(例: "github.com/gin-gonic/gin", "golang.org/x/crypto/bcrypt")。

まとめ

[編集]

import は、Goプログラムが外部のコードを利用するための基本的なメカニズムです。適切な import 宣言を行うことで、効率的かつ機能豊富なプログラムを開発することができます。インポートするパッケージの種類や目的に応じて、適切な import の形式を選択することが重要です。