インストール
brew install go
GO111MODULE のデフォルト値
- Go 1.11 で導入された $GO111MODULE は、Go modules を使うかどうか
- on にされていれば Go modules を使う (module-aware mode)
- off にされていれば従来どおり $GOPATH を使う (GOPATH mode)
- auto の場合 $GOPATH/src の外に対象のリポジトリがあり、 go.mod が存在する場合は module-aware mode、そうでない場合は GOPATH mode
export PATH=$GOPATH/bin:$PATH
export GOPATH=$HOME/go
export GO111MODULE=on
モジュール初期化
mkdir サンプルプロジェクト作成
cd サンプルプロジェクト作成
モジュール初期化
go mod init github.com/so-hee/modules_example
Go modules 特徴
- リポジトリのモジュール化
- セマンティックバージョニングによるモジュールのバージョニング
- go.mod による依存関係の管理
- go.sum による依存モジュールのチェックサムの管理
Go Module Ecosystem
Go 1.12 までは Go modules のサポートは限定的でしたが、Go 1.13 ではさらに以下の点で強化が行われます。
- Module Index
- Module Authentication
- Module Mirrors
- Module Proxy
GOPATH mode から module-aware mode
- 今まで(GOPATH mode)は標準pkg以外を全部 $GOPATH 以下のディレクトリで管理する仕様
- プロジェクトも $GOPATH/src 配下に作成
- module-aware mode では標準pkg以外の全てのパッケージをモジュールとして扱う
- モジュールの管理やビルドが任意のディレクトリで可能になりました。