Goのモジュールモードでの開発

  • 2021.05.06
  • Go
Goのモジュールモードでの開発

最近、Goの勉強を始めたのでメモ。Go自体のインストールはすでに終えている前提。インストールはgoenvを使うのが良さそう。

GOPATHモードとモジュール対応モード

Goでは上記の2つのモードが存在する。2021年5月現在、Goの最新バージョンは1.16(1.17は2021年8月ごろのリリース予定)で、1.16ではデフォルトでモジュール対応モードが有効になっている(GO111MODULEがonになっている)。

GOPATHモード

バージョン 1.10 までのモード。GOPATH配下にプロジェクトをおかないといけなかったという理解。また、使用するパッケージの管理はリポジトリの最新リビジョンのみが対象となっていたため、一つの環境で複数のプロジェクトが同居している場合に管理が煩雑になるという問題があった。

モジュール対応モード

プロジェクトは任意のディレクトリで作成できる。使用するパッケージはgo.modというファイルで管理され、リビジョンを指定して管理することができる。

開発で使用するコマンド

プロジェクトの初期化

go mod init コマンドの引数にモジュール名を指定して、プロジェクトを初期化する。

go mod init hello-go

これを実行すると、go.modファイルが作成される。

パッケージの追加・削除

使用するパッケージを追加・削除するにはgo.modの編集が必要。といっても、手書きで編集するのではなく、以下の方法がある。

  • コードにimport文を書いてから go get を実行 ※新規モジュールの追加のみ
  • コードにimport文を書いてから go mod tidy を実行 ※不要モジュールの削除と新規モジュールの追加を行ってくれる
  • go get <pacakge>[@<version>]

上記の通り、いくつか方法があるが、go mod tidyが良さそう。また、上記を実行すると、mod.modに必要パッケージが追加されるだけでなく、ソースのダウンロードも行ってくれる(GOPATHのpkd/mod配下)